我觉得很难理解以下多线程同步代码,希望有人能指出我的误解在哪里。
user1_1
user2_1
user1_2
user2_2
运行结果是:
find
根据我的理解,这两个线程应该处于死锁状态,因为user1获得了“cond”。并在' self.cond.wait()'等待用户2的通知而user2被阻止在' self.cond.acquire()'并且无法达到self.cond.notify()'。似乎他们都被封锁了,等待另一个人给他们所需要的东西,所以他们应该陷入僵局。
我对锁的误解在哪里?
答案 0 :(得分:0)
您的程序可以正常工作。没有死锁,因为Condition.wait()
释放锁,允许user2获取它并继续。