什么';python线程模块中事件和锁的区别是什么?
在这些场景中,什么';python线程模块中事件和锁的区别是什么?,python,blocking,python-multithreading,Python,Blocking,Python Multithreading,在这些场景中,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):
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()
如果等待一个事件,执行将暂停,直到发生
事件.set()
为止
event.wait() # waits for event.set()
仅当已获取锁时,获取锁才会暂停
lock.acquire() # first time: returns true
lock.acquire() # second time: stalls until lock.release()
两个类都有不同的用例。这将有助于您理解差异 实际上,我发现python中事件与锁的区别在于:
- 一个事件可以有许多服务员,当事件被设置或触发时,所有这些服务员都会醒来
- 一个锁可以有很多侍者,当锁被释放时,只有一个侍者会醒来,因此会获得锁李>