條件變數與互斥鎖的結合使用

2021-08-20 20:53:09 字數 513 閱讀 2726

對於執行緒一:

1.上鎖

2.wait

3.解鎖

對於執行緒二:

1.上鎖

2.signal

3.解鎖

in thread1:

pthread_mutex_lock(&m_mutex);   

pthread_cond_wait(&m_cond,&m_mutex);   

pthread_mutex_unlock(&m_mutex);  

in thread2:

pthread_mutex_lock(&m_mutex);   

pthread_cond_signal(&m_cond);   

pthread_mutex_unlock(&m_mutex);  

為什麼要與pthread_mutex 一起使用呢?

1.cond_wait函式解鎖並等待是乙個原子操作,不可以被打斷。

2.等待函式返回之前,重新鎖定,如果不鎖定,其他執行緒可能會對這個執行緒進行修改。

互斥鎖與條件變數

最近複習湯小丹的 計算機作業系統 西安電子科技大學出版社,第三版 程序 執行緒同步章節時,發現乙個疑問。在講程序同步時,提到了兩類方法 訊號量機制和管程機制。訊號量機制又包括四種 整型訊號量 記錄型訊號量 and型訊號量 訊號量集。如果採用整型訊號量或記錄型訊號量,則在共享多個資源時,可能出現程序死...

互斥鎖與條件變數

互斥鎖用於保護臨界區,使得任何時刻只有乙個執行緒在執行其中的 確切的說,互斥鎖用於保護多個執行緒或多個程序分享的共享資料。posix互斥鎖被宣告為具有pthread mutex t資料型別的變數。若互斥鎖變數是靜態分配的,則初始化為 static pthread mutex t lock pthre...

互斥鎖與條件變數

pthread cond wait總和乙個互斥鎖結合使用。在呼叫pthread cond wait前要先獲取鎖。pthread cond wait函式執行時先自動釋放指定的鎖,然後等待條件變數的變化。在函式呼叫返回之前,自動將指定的互斥量重新鎖住。int pthread cond signal pt...