2012-07-12 8 views
6

Event e Lock fanno la stessa cosa in queste scene?Qual è la differenza tra Event e Lock nel modulo di threading di Python?

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

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

un'altra:

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

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

risposta

6

Se si attende su un evento, le bancarelle di esecuzione fino a un event.set() accade

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

acquisizione di un blocco bancarelle solo se il blocco è già acquisito

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

Entrambe le classi hanno diversi casi d'uso. This article ti aiuterà a capire le differenze.

Problemi correlati