[转]pthread 有了互斥量为什么还要条件变量

本文从WordPress迁移而来, 查看全部WordPress迁移文章

http://blog.csdn.net/bolike/article/details/9025389

关于 pthread_cond_wait(&cond, &mutex); 的基本原理

  1. 首先 pthread_mutex_unlock(&mutex); 虽然本线程在等待cond条件成立;不过先放开mutex,让别的线程可以使用
  2. cond条件成立
  3. pthread_mutex_lock(&mutex); 先得到互斥锁,不能冒冒然唤醒;

以上就是 pthread_cond_wait(&cond, &mutex); 内部的执行内容

因而总的框架大致为

1
2
3
4
pthread_mutex_lock(&mutex);
pthread_cond_wait(&cond, &mutex);
do_sonmething();
pthread_mutex_unlock(&mutex);

现在可以理解这些语句之间的关系了