我遇到了两个似乎死锁的线程的问题
这个想法是这样的:
p1 = threading.Thread(targest =myClass.setData, args = mylist)
p1.start()
p2 = threading.Thread(target = myClass.takeData, args = mylist)
p2.start()
mylist是一个列表。
当列表几乎为空或仅运行p1或p2时,一切正常。 如果两者都运行,它们似乎陷入僵局。 我试图锁定它们 - 无济于事。
setData有一个无限的while循环,它重置了mylist中的数据,而takedata有一个无限的while循环,它从mylist中读取数据。
我可以做我想做的事吗?
答案 0 :(得分:1)
正如Adrián López所说的是生产者 - 消费者问题。您必须使用信号量来锁定myClass.setData
和myClass.takeData
使用的全局数据。
这里有一个功能性的例子来获取想法。
http://smherwig.blogspot.com.es/2012/09/producer-consumer-model-with-python.html