线程间通信及虚假唤醒
生活随笔
收集整理的這篇文章主要介紹了
线程间通信及虚假唤醒
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
//真正喚醒
while (!cond) {lock.wait();
}
//虛假喚醒
if(!code)
{
lock.wait();
在不同的語言,甚至不同的操作系統(tǒng)上,條件鎖都會產(chǎn)生虛假喚醒現(xiàn)象。所有語言的條件鎖庫都推薦用戶把wait()放進(jìn)循環(huán)里:
我們知道wait()狀態(tài)的時候,線程會釋放資源,等到被喚醒的時候,從上次wait()的地方醒來,繼續(xù)執(zhí)行,如果使用條件判斷,判斷完code==true,然后wait(),其他線程將code修改成flase,然后再喚醒本線程,此時,本線程不會再繼續(xù)判斷,而是繼續(xù)執(zhí)行,而如果使用while循環(huán)判斷,就能檢驗出code已經(jīng)被修改成flase
總結(jié)
以上是生活随笔為你收集整理的线程间通信及虚假唤醒的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互斥锁、自旋锁和自适应自旋锁
- 下一篇: 如何设计销售CRM×运营CRM×社交化S