1
マニュアルページによると、pthread_cond_broadcastは、条件変数(condvar)を待機しているすべてのスレッドを起動します。そしてそれらの目覚めたスレッドは、mutexロックを保持し、からpthread_cond_waitに戻ります。マルチスレッドpthread_cond_waitは、ミューテックスロックを起こして保持します
しかし私が混乱しているのは、ミューテックスロックが同時に1つのスレッドだけで保持されるのではないかということです。
ありがとうございます。
cnicutar:これは**スレッド**がpthread_cond_wait()から戻ることを意味し、他のスレッドはブロックされたままであることを意味します。私は正しい? –
@Martin Ng他のスレッドはブロックされたままです。 – cnicutar
@Martin:一度に1つのスレッド*だけが 'pthread_cond_wait()'コール(ミューテックスを保持するもの)から戻ることになります。ミューテックスが解放されると、他のものが(1つずつ)戻ります。 'while'ループから抜けるかどうかは、条件が真のままであるか、最初の(または後続の)スレッドによってfalseになるかによって決まります。 –