說你有這樣的代碼爲什麼你需要一個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?好吧,我知道你可能有當調用pthread_cond_wait被稱爲其中凸輪>狀態不等於WAIT_DISPAY的情況下,但在這種情況下,你可以只檢查它通過如果條件,而不是使用而。
我在這裏錯過了什麼嗎?我對pthread_cond_wait的理解是它只是等待無限,如果cam_video_cond沒有發信號。此外,它在被調用時解鎖互斥鎖,但當條件被髮信號時,在返回之前,它會重新鎖定cam_video_lock。我對嗎?
同樣的問題在這裏http://www.unix.com/programming/149791-condition-variables。html – MetallicPriest
[虛假喚醒](http://en.wikipedia.org/wiki/Spurious_wakeup) –