1

ミューテックスは、クリティカル セクションを保護するために使用されます。ミューテックスでダウンがすでに行われているとしましょう。それを行ったスレッドが CS にある間、他の 10 個のスレッドがそのすぐ後ろにあり、ミューテックスでダウンを行い、スリープ状態になります。最初のスレッドがクリティカル セクションを出てミューテックスを起動すると、10 個のスレッドすべてが起動し、実行しようとしていたこと、つまりクリティカル セクションに入る操作を再開しますか? それでは、10 個すべてが同時にクリティカル セクションに入る可能性があるということではないでしょうか?

4

1 に答える 1

1

いいえ、1 つのスレッドだけがウェイクアップしてミューテックスの所有権を取得します。残りは眠ったままになります。通常、どのスレッドがウェイクアップするかは非決定論的です。

上記は一般論であり、実装の詳細はシステムごとに異なります。たとえば、Java ではObject#notify()Object#notifyAll()を比較します。

于 2011-03-17T22:18:01.113 に答える