Stackoverflow でこのトピックに関する投稿を読みましたが、要点を理解できませんでした。たぶん、それらの違いを特定の例に限定することができます.
鍵付きのトイレがあります。Mutex: 1 つのスレッドがキーを受け取ります。他のスレッドがトイレに入る必要がある場合、それらは待機します。現在の所有者が出てきて、警備員(OSカーネル)に鍵を渡し、警備員はトイレの所有権を別の人に渡します。
問題の説明: 共有リソースは、それをロックしたスレッド内の同じミューテックスによってロック解除されなければならないことに、すべての人が同意しているようです。ただし、バイナリ セマフォの場合は、他のスレッドでもロックを解除できます。ここで、セマフォの実装を検討してください。
最初の人がトイレに到着し、wait ステートメントを実行すると、セマフォ構造の値が 1 から 0 になります。他の人 (他のスレッド) が来て、wait ステートメントを実行すると、「値 = 0」であるためブロックされます。 . では、他のスレッドがクリティカル セクションに入ることができないときに、他のスレッドが特別にトイレ/クリティカル セクションのロックを解除できると常に言われているのはなぜですか?