条件变量:
本身不是锁! 但是通常结合锁来使用(mutex)。
pthread_cond_t cond;
初始化条件变量:
1.pthread_cond_init(&cond,NULL); 动态初始化
2.pthread_cond_t cond=PTHREAD_COND_INITIALIZER; 静态初始化
阻塞等待条件:
pthread_cond_wait(&cond,&mutex);
作用:
1.阻塞等待条件满足
2.解锁已经加锁成功的信号量(相当于pthread_mutex_unlock(&mutex))
3.当条件满足时,函数返回时,重新加锁信号量(相当于,pthread_mutex_lock(&mutex))
pthread_cond_signal():唤醒阻塞在条件变量上的(至少)一个线程。
pthread_cond_broadcast():唤醒阻塞在条件变量上的所有线程。