条件変数の概念が存在する理由は、ミューテックスだけでは不十分だと確信しています。しかし、それは私を打ち負かし、条件変数が不可欠である場合、具体的なシナリオで自分自身を納得させることができません。
条件変数、ミューテックス、およびロックの質問の受け入れられた回答の違いは、条件変数が
「シグナリング」メカニズムでロックします。これは、スレッドがリソースが使用可能になるのを待つ必要がある場合に使用されます。スレッドはCVで「待機」でき、リソースプロデューサーは変数を「通知」できます。この場合、CVを待機しているスレッドは通知を受け取り、実行を続行できます。
私が混乱しているのは、スレッドがミューテックスを待機することもできるということです。スレッドがシグナルを送信されたとき、それは単に変数が使用可能になったことを意味します。なぜ条件変数が必要なのですか?
PS:また、条件変数の目的が見えないように私のビジョンをより斜めにするときは、とにかく条件変数を保護するためにミューテックスが必要です。