条件变量 pthread_cond_wait () 之解释~
2012-06-23 08:33
204 查看
关于pthread_cond_wait()的解释:
这个函数是比较难以理解的~
我们且看:pthread_cond_wait()的内部的过程是什么?:就是“解锁”->“sleep”->“加锁”
由上图,我们可以知道:ifA先Read data,B先锁住M,那么在while(empty(Q)),时候,发现队列是空的,那么pthread_cond_wait()
这个时候需要做的是:解除M锁!(那么A那边就可以加锁了,可以执行下面的动作。。。),然后进入一个Sleep睡眠状态,所以不会消耗CPU,这正是我们需要的结果!(if不是,那么仅仅要互斥量就可以了不是吗?呵呵~)...
对于A这边处理OK数据后,就会发送一个“signal”C来提示B你现在的条件来了~(几乎所有的文档都会提到此处的“signal”不同于SIG_HUP之类的正真的信号~),随后A将M解锁!此时对于B来说,那么pthread_cond_wait()要做的不是马上返回哟,而是将M再次加锁!那么A那么就被互斥了,就要等待B读取结束才能执行~
如此循环!
所以主要就是要理解pthread_cond_wait()的内部动作:“解锁”->“sleep”->“加锁”!
不知道有没有说清楚,呵呵呵~~~
注:引入条件量,主要是为了减少消耗CPU的时间!它进入的是睡眠的状态而不是“轮循”状态,所以~~~
相关文章推荐
- <转载>条件变量(互斥量)与pthread_cond_wait函数详解
- 线程中的条件变量pthread_cond_wait、pthread_cond_signal
- 互斥量、条件变量与pthread_cond_wait()函数的使用,详解
- 条件变量pthread_cond_signal、pthread_cond_wait
- pthread_cond_wait()加一个while为什么的解释
- 互斥量、条件变量与pthread_cond_wait()函数的使用,详解
- 互斥量、条件变量与pthread_cond_wait()函数的使用,详解
- 线程同步,条件变量pthread_cond_wait
- 条件变量 pthread_cond_wait 函数的解锁和等待为原子操作
- 一段使用 mutex 和 条件变量 pthread_cond_wait 的例子
- 研究条件变量pthread_cond_wait的机制
- 互斥量、条件变量与pthread_cond_wait()函数的使用,详解
- 条件变量(互斥量)与pthread_cond_wait函数详解
- 条件变量pthread_cond_wait浅谈
- Linux 条件变量 pthread_cond_wait
- pthread_cond_wait()条件变量
- 互斥量、条件变量与pthread_cond_wait()函数的使用,详解
- Linux 条件变量 pthread_cond_wait
- 线程相关函数(6)-pthread_cond_wait(),pthread_cond_signal(), 条件变量
- 互斥量、条件变量与pthread_cond_wait()函数的使用