條件變數(四)

2021-10-07 07:29:18 字數 990 閱讀 9477

條件變數的理念:當執行緒在等待滿足某些條件時使執行緒進入睡眠狀態,一旦條件滿足,就喚醒因等待滿足特定條件而睡眠的執行緒。

條件變數(條件鎖)也可以解決執行緒同步和共享資源訪問的問題,條件變數是對互斥鎖的補充,它允許乙個執行緒阻塞並等待另乙個執行緒傳送的訊號,當收到訊號時,阻塞的執行緒被喚醒並試圖鎖定與之相關的互斥鎖。

使用條件變數 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...