條件變數是利用執行緒間共享的全域性變數進行同步的一種機制,主要包括兩個動作:
乙個執行緒等待"田間變數的條件成立"而掛起;
另乙個執行緒使"條件成立"。
條件變數通常是和互斥鎖一起使用。
如果乙個條件為假,乙個執行緒自動阻塞,並釋放等待狀態改變的互斥鎖;
如果另乙個執行緒改變了條件,它發訊號給關聯的條件變數,
喚醒乙個或多個等待它的執行緒,重新獲得互斥鎖,重新評價條件。
條件變數通常用於執行緒間的同步。
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...