引用手冊頁:使用條件變量時,始終存在一個布爾謂詞,其中涉及與每個條件等待相關聯(lián)的共享變量,如果線程應該繼續(xù)執(zhí)行,則為true。從pthread_cond_timedwait()或pthread_cond_wait()函數(shù)可能會引起虛假的喚醒。由于pthread_cond_timedwait()或pthread_cond_wait()的返回并不暗示此謂詞的值,因此應在返回時重新評估該謂詞。因此,pthread_cond_wait即使您未發(fā)出信號也可以返回。至少乍一看,這似乎很殘酷。這就像一個函數(shù),它隨機返回錯誤的值,或者在它真正到達正確的return語句之前隨機返回。似乎是一個重大錯誤。但是他們選擇在手冊頁中記錄而不是修復它的事實似乎表明,有一個合理的原因導致pthread_cond_wait最終虛假地醒來。大概,它的工作方式具有內在的本質,使它無濟于事。問題是什么。為什么會pthread_cond_wait虛假歸還?為什么不能保證僅在正確發(fā)出信號后才能喚醒?誰能解釋其偽造行為的原因?
3 回答

拉莫斯之舞
TA貢獻1820條經驗 獲得超10個贊
pthread_cond_signal中的“通過條件信號進行的多次喚醒”部分提供了pthread_cond_wait和pthread_cond_signal的示例實現(xiàn),其中涉及虛假的喚醒。
- 3 回答
- 0 關注
- 921 瀏覽
添加回答
舉報
0/150
提交
取消