1樓:匿名使用者
mutex是用來保護資源的。
cond是用來通知喚醒的一種機制,如a等待b的輸出結果,a可呼叫pthread_cond_wait來等待,b輸出結果後可以通知a,告訴他b的工作已經結束,a可以繼續執行了。b呼叫thread_cond_signal or pthread_cond_broadcas來完成此操作。signal喚醒一個等待者,broadcst喚醒全部。
條件變數 請教高手
2樓:要飛的鷙鳥
兩個執行緒掉用一個鎖時,如果一個執行緒上了鎖,另一個執行緒就被阻塞了。
喚醒後會再執行一次while迴圈,檢查wait條件是否成立,不成立則執行**部分,執行完**就解鎖。
while是為了檢查條件變數,然後決定是否等待。如果用if,那麼假設有兩個執行緒同時等待條件變數,結果只釋放了一個位置,由於是if,兩個執行緒都往下執行,這就會出問題,所以要用while檢查。
signal如果在解鎖前,那麼等待的執行緒還沒拿到鎖,就沒有進入條件變數的等待,發訊號也沒用。
條件變數是執行緒中的東西,就是等待某一條件的發生,和訊號一樣。
3樓:葉綠大地
pthread_mutex_lock(&q);
while(work==null)
pthread_cond_wait(&r,&q);
//**
pthread_mutex_unlock(&q);
pthread_mutex_lock(&q);
//**
pthread_nutex_unlock(&q);
pthread_cond_signal(&r);
大俠已經解釋得差不多了,我只補充一下。
1、執行緒2 並沒有等待訊號量,所以執行緒1裡沒必要加上pthread_cond_signal(&cond2);
2、執行緒1在 wait signal 時會自動解鎖,所以並不會出現死鎖的情況
pthread為什麼規定cond要和mutex一起使用
4樓:隋龍嶽尋桃
條件變數是由互斥變數保護的,鎖住互斥變數後才能計算條件。
如何在android下采用相對時間,實現超時等待的功能
訊號量,互斥鎖,讀寫鎖和條件變數的區別
5樓:醜新瑟瑟發抖
猴子阿吉想了想
爬上樹**
左手右手動了動
請教有關php中字元型變數賦值,請教有關php中字元型變數賦值 獲取問題
在機器上跑一邊遍。a錯了,是轉義字元,不能單獨使用,比如要賦值 給ch,必須寫成ch 否則編譯出錯 php 我要把一個字串賦值給一個變數,但是這個字串裡面含有 怎麼賦值 a 我是 中國 人 b a 用轉義字元 你可以先將這個字串進行轉義,再賦值給變數。php中,如何將一個字串的符合條件的某一部分賦值...
請教有關基金的知識(基金種類 如何買賣 現在哪個銀行發行的基
2 營業網點開戶 攜帶本人有效身份證件和牡丹卡到工行營業網點辦理 開戶。這種比較簡單,讓工作人員幫你把所有手續全都給辦完,你就等著吧,呵呵。2 認購或申購 認購是指購買正處在發行期內的 認購的 在發行期不能賣出。也就是新推出的 不建議買這種 初始認購金額為個人最低認購金額的整數倍,但不能高於最高認購...
矩陣中元素是均是變數如何在matlab中定義它請高
參考 n 5 x sym zeros n for i 1 n for j 1 n cmd sprintf sym x i i i,j x i,j eval cmd endend x執行來結果 源x x11,x12,x13,x14,x15 x21,x22,x23,x24,x25 x31,x32,x33...