2012-07-12 13 views
6

EventLockはこれらのシーンで同じことをしますか?PythonスレッドモジュールのEventとLockの違いは何ですか?

class MyThread1(threading.Thread): 
    def __init__(event): 
     self.event = event 

    def run(self): 
     self.event.wait() 
     # do something 
     self.event.clear() 

別:

class MyThread2(threading.Thread): 
    def __init__(lock): 
     self.lock = lock 

    def run(self): 
     self.lock.acquire() 
     # do something 
     self.lock.release() 

答えて

6

あなたがイベントを待つ場合は、実行屋台event.set()がロックを取得

event.wait() # waits for event.set() 

を発生するまでロックがすでに

を取得した場合にのみストール
lock.acquire() # first time: returns true 
lock.acquire() # second time: stalls until lock.release() 

どちらのクラスも異なるユースケースを持っています。 This articleはその違いを理解するのに役立ちます。

関連する問題