Waiting on Condition Variables

pthread_cond_wait

Function Prototype

int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex);

Function

  1. 解開 mutex 的鎖
  2. 進入睡眠狀態等待 cond 被 signal
  3. 在被 pthread_cond_signalpthread_cond_broadcast 喚醒這個 thread 時,pthread_cond_wait 會在返回前重新鎖定 mutex

第一二步驟是 atomic (原因詳見 example)

Example

D-SP-Ch11bdc-Condition_Variables_Examples