条件変数は、私がまだ少し苦労している C++11 の側面の 1 つです。私が収集した情報によると、条件変数はセマフォに非常に似ています。
しかし、セマフォが機能するにはロックは必要ありません。条件変数は必要です。そして、ロックにはミューテックスが必要です。したがって、セマフォの非常に単純な機能を使用するには、条件変数を管理するだけでなく、ミューテックスとロックも管理する必要があります。
では、なぜ条件変数にこれが必要なのでしょうか? また、この要件を追加することでどのような追加機能が提供されるのでしょうか?
ベストアンサー1
条件変数は、通常、状態の変化を通知するために使用されます。通常、その変更を行うにはミューテックスが必要であり、それに続くシグナルはアトミックです。
セマフォは、シグナル機構とともに何らかの状態 (フラグまたはカウンター) をカプセル化します。条件変数はより原始的で、シグナルのみを提供します。