2

Pythonのセマフォは負の初期値をサポートしていません。どのようにすれば、他の8つのスレッドが何かをするまで、スレッドを待ちますか? Semophoreが負の初期値をサポートしていれば、私はそれを-8に設定し、各スレッドが値を1つ増やして0になるまで待つことができます。Pythonセマフォ:負の初期値が必要です

クリティカルセクション内のグローバルカウンタを手動で増分してから、条件変数を使用することもできますが、他にも提案があるかどうかを確認したいと考えています。

答えて

3

確かに答えが遅れていますが、それは他の誰かにとって便利なことです。

8種類のスレッドが何かをするのを待つ場合は、8回待つだけです。 あなたが

s = threading.Semaphore(0)

、その後

for _ in range(8): 
    s.acquire() 

が仕事をすると0でセマフォを初期化します。

関連する問題