2012-07-12 3 views
6

Haben Event und Lock das Gleiche in diesen Szenen?Was ist der Unterschied zwischen Event und Lock im Python-Threading-Modul?

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

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

andere:

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

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

Antwort

6

Wenn Sie auf ein Ereignis warten, die Ausführung an, bis ein event.set() geschieht

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

Erwerb nur eine Sperre Ständen, wenn die Sperre bereits

erworben wird
lock.acquire() # first time: returns true 
lock.acquire() # second time: stalls until lock.release() 

Beide Klassen haben unterschiedliche Anwendungsfälle. This article wird Ihnen helfen, die Unterschiede zu verstehen.