线程问题

时间:2013-02-12 12:28:44

标签: python deadlock multithreading

我遇到了两个似乎死锁的线程的问题

这个想法是这样的:

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中读取数据。

我可以做我想做的事吗?

1 个答案:

答案 0 :(得分:1)

正如Adrián López所说的是生产者 - 消费者问题。您必须使用信号量来锁定myClass.setDatamyClass.takeData使用的全局数据。 这里有一个功能性的例子来获取想法。

http://smherwig.blogspot.com.es/2012/09/producer-consumer-model-with-python.html