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

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