條件變數的理念:當執行緒在等待滿足某些條件時使執行緒進入睡眠狀態,一旦條件滿足,就喚醒因等待滿足特定條件而睡眠的執行緒。
條件變數(條件鎖)也可以解決執行緒同步和共享資源訪問的問題,條件變數是對互斥鎖的補充,它允許乙個執行緒阻塞並等待另乙個執行緒傳送的訊號,當收到訊號時,阻塞的執行緒被喚醒並試圖鎖定與之相關的互斥鎖。
使用條件變數 pthread_cond_t cond
條件變數的初始化與銷毀
條件變數使用之前需要初始化,有兩種方式:
1、 pthread_cond_t cond = pthread_cond_initializer(靜態初始化)
2、 int pthread_cond_init(pthread_cond_t *restrict cond,const pthread_condattr_t *restrict attr) (動態初始化)
條件變數使用完成後需要銷毀
int pthread_cond_destroy(pthread_cond_t *cond)
條件變數使用需要配合互斥量
1、int pthread_cond_wait( pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex )
2、int pthread_cond_timewait(pthread_cond_t *restrict cond, pthread_mute_x *restrict mutex,const struct timespec *restrict abstime)
當條件滿足時,需要喚醒等待條件的執行緒
int pthread_cond_broadcast(pthread_cond_t *cond)
int pthread_cond_signal(pthread_cond_t *cond)
條件變數 pthread cond init
include int pthread cond init pthread cond t cv,const pthread condattr t cattr 返回值 函式成功返回0 任何其他返回值都表示錯誤初始化乙個條件變數。當引數cattr為空指標時,函式建立的是乙個預設的條件變數。否則條件變數的...
條件變數 pthread cond init
include int pthread cond init pthread cond t cv,const pthread condattr t cattr 返回值 函式成功返回0 任何其他返回值都表示錯誤初始化乙個條件變數。當引數cattr為空指標時,函式建立的是乙個預設的條件變數。否則條件變數的...
pthread cond t條件變數
條件變數是利用執行緒間共享的全域性變數進行同步的一種機制,主要包括兩個動作 乙個執行緒等待 條件變數的條件成立 而掛起 另乙個執行緒使 條件成立 給出條件成立訊號 為了防止競爭,條件變數的使用總是和乙個互斥鎖結合在一起。一 pthread cond wait定義 函式原型 int pthread c...