關於條件變數的學習

2021-06-21 14:12:50 字數 728 閱讀 1074

條件變數是利用執行緒間共享的全域性變數進行同步的一種機制,主要包括兩個動作:

乙個執行緒等待"田間變數的條件成立"而掛起;

另乙個執行緒使"條件成立"。

條件變數通常是和互斥鎖一起使用。

如果乙個條件為假,乙個執行緒自動阻塞,並釋放等待狀態改變的互斥鎖;

如果另乙個執行緒改變了條件,它發訊號給關聯的條件變數,

喚醒乙個或多個等待它的執行緒,重新獲得互斥鎖,重新評價條件。

條件變數通常用於執行緒間的同步。

1. 建立條件變數,記得pthread是和mutex搭配使用哦,

pthread_mutex_init

pthread_cond_init

2. 乙個執行緒等待,

pthread_mutex_lock

pthread_cond_timedwait or pthread_cond_wait

pthread_mutex_unlock

3. 另乙個執行緒傳送條件成立的訊號,

pthread_mutex_lock

pthread_cond_broadcast or pthread_cond_signal

pthread_mutex_unlock

4. 使用完後可以將建立的資源銷毀,

pthread_mutex_destroy

pthread_cond_destroy

關於pthread的使用,這裡就不說了;

有需要時直接查資料吧。

linux 執行緒學習之條件變數

下面是乙個簡單的例子,我們可以從程式的執行來了解條件變數的作用。include include include pthread mutex t mutex pthread mutex initializer 初始化互斥鎖 pthread cond t cond pthread cond initia...

linux 執行緒學習之條件變數

互斥鎖 用來上鎖。條件變數 用來等待,當條件變數用來自動阻塞乙個執行緒,直到某特殊情況發生為止。通常條件變數和互斥鎖同時使用。函式介紹 1 名稱 pthread cond init 目標 條件變數初始化 標頭檔案 include pthread.h 函式原形 int pthread cond ini...

linux 執行緒學習之條件變數

互斥鎖 用來上鎖。條件變數 用來等待,當條件變數用來自動阻塞乙個執行緒,直到某特殊情況發生為止。通常條件變數和互斥鎖同時使用。函式介紹 1 名稱 pthread cond init 目標 條件變數初始化 標頭檔案 include pthread.h 函式原形 int pthread cond ini...