0

デッドロックしているように見える 2 つのスレッドで問題が発生しました

アイデアは次のとおりです。

p1 = threading.Thread(targest  =myClass.setData, args = mylist)
p1.start()
p2 = threading.Thread(target = myClass.takeData, args = mylist)
p2.start()

mylist はリストです。

リストがほとんど空の場合、または p1 または p2 のいずれかのみが実行されている場合、すべてが正常に機能します。両方が実行されると、デッドロックしているように見えます。私はそれらをロックしようとしましたが、役に立ちませんでした。

setData には mylist のデータをリセットする無限 while ループがあり、takedata には mylist からデータを読み取る無限 while ループがあります。

私がやろうとしていることをすることは可能ですか?

4

1 に答える 1

1

Adrián Lópezが言うように、これ は生産者と消費者の問題です。および で使用されるグローバル データをロックするには、セマフォを使用する必要が myClass.setDataありmyClass.takeDataます。ここに、アイデアを得るための機能的な例があります。

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

于 2013-02-12T12:48:49.520 に答える