を待っている間になぜあなたはwhileループが必要なのかは、あなたがこのコードを持っている条件変数
pthread_mutex_lock(&cam->video_lock);
while(cam->status == WAIT_DISPLAY) // <-- Why is this a 'while' and not an 'if'?
pthread_cond_wait(&cam->video_cond, &cam->video_lock);
pthread_mutex_unlock(&cam->video_lock);
あなたがここにwhileループが必要なのか、なぜ私の質問は、であると言います。 pthread_cond_waitシグナルスレッドが信号を送るまで待つだけですcam_video_cond? OK、私はあなたがpthread_cond_waitのが呼び出されたときにCAM->は、ステータスがWAIT_DISPAYと等しくない場合があるかもしれません知っているが、その場合にはあなただけではなくしばらく使用するよりもかの条件によってそれをチェックすることができます。
ここに何か不足していますか? の私の理解pthread_cond_waitは、のcam_video_condが通知されない場合、無限に待機するということです。また、呼び出されたときcam_video_lock mutexのロックを解除しますが、条件が合図されたときに戻る前に、cam_video_lockを再ロックします。私は正しい?
ここでも同じ質問、http://www.unix.com/programming/149791-condition-variables。html – MetallicPriest
[偽の起床](http://ja.wikipedia.org/wiki/Spurious_wakeup) –