windows下没听过条件变量,但是有信号量。但是信号量好像没有条件变量强大。条件变量一般需要和互斥锁一起使用。
pthread_mutex_lock(&mutex);
while (!test_cond) {
pthread_cond_wait(&cond, &mutex);
}
pthread_mutex_unlock(&mutex);
其中pthread_cond_wait 他是在不条件不满足时,执行类似pthread_mutex_unlock操作,而条件满足时执行类似pthread_mutex_lock操作。同事test_cond的也很重要,另外一个线程在调用pthread_cond_signal(&cond);之前要先把test_cond置。