2012-07-12 42 views
6

EventLock có thực hiện tương tự trong những cảnh này không?Sự khác biệt của Sự kiện và Khóa trong mô-đun luồng trăn là gì?

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

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

khác:

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

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

Trả lời

6

Nếu bạn chờ đợi vào một sự kiện, các quầy hàng thực hiện cho đến khi một event.set() xảy ra

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

Thu hút một khóa duy nhất quầy hàng nếu khóa đã được mua

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

Cả hai lớp đều có các trường hợp sử dụng khác nhau. This article sẽ giúp bạn hiểu sự khác biệt.