この質問への最初の回答を使用して、作業中の課題に役立てようとしています。許可が0のセマフォはどの程度正確に機能しますか?それは私にはあまり意味がないようです。そのセマフォで永遠の待機を作成するだけですか?その場合、セマフォに決して与えられない許可を待っている間に、スレッドがセマフォを「通過」するようにするにはどうすればよいでしょうか。
5335 次
1 に答える
12
再び The Little Book of Semaphores の §2.2 から:
リスト 2.1: セマフォの初期化構文
fred = Semaphore(1)
関数
Semaphore
はコンストラクターです。新しいセマフォを作成して返します。セマフォの初期値は、パラメーターとしてコンストラクターに渡されます。
したがって、作成者の疑似コードで0
は、許可の数ではありません。セマフォの初期値です。ゼロの値は何を意味しますか? これは、リスト 2.1 の直後のテキストで説明されています。
値が正の場合、ブロックせずに減少できるスレッドの数を表します。負の場合は、ブロックされて待機しているスレッドの数を表します。値がゼロの場合、待機しているスレッドがないことを意味しますが、スレッドがデクリメントしようとするとブロックされます。
(強調を追加)
于 2013-02-10T01:03:18.253 に答える