タイトルは基本的にそれ自体を物語っています。特定の条件とミューテックスで pthread_cond_wait を呼び出した場合、対応する条件で pthread_cond_signal が呼び出されるまで、そのスレッドはブロックされたままになりますか? それとも、後でミューテックスが再びロック解除されても、ブロックは解除されますか?
答えが前者の場合、フォローアップがあります。スレッド間のメッセージ パッシングに使用するキューがあります。一度に 1 つのスレッドだけが項目をキューに追加できるようにしたい (したがって、ミューテックスを使用する)。他のスレッドがミューテックス自体を取得するのを待っているかどうかは、どのスレッドにもわかりません。
アイテムをキューに追加しようとすると、ミューテックスをロックし、pthread 条件でキューがいっぱいになるのを待ってから追加を実行し、ミューテックスをロック解除します。ロックを解除する前に、他のスレッドが待機しているかどうかわからなくても、pthread_cond_signal を実行する必要がありますか? 複数のスレッドが待機している場合はどうなりますか?