因此,最后两个读线程都等待条件变量,互斥锁没有被锁住。
函数pthread_cond_wait主要就是用于阻塞线程的,它有两个参数;第一个是一个指向条件变量的指针,第二个是一个锁定了的互斥量。
不过,每个条件变量都应该伴有一个互斥。
最终,线程模块提供了几个基本的同步方式如锁、事件,条件变量和旗语。
还要注意,两个条件变量使用相同的互斥锁。
这么做会唤醒所有等待条件变量_ cond的读线程;读线程现在隐式地争夺互斥锁。
重点论述了多线程数据处理方法中的互斥锁和条件变量.
条件变量让开发者能够实现一个条件,在这个条件下线程执行然后被阻塞。
push方法不依赖于任何条件变量,所以没有额外的等待。
而POSIX条件变量将是我下一篇文章的主题,其中将说明如何正确使用条件变量。
这正是POSIX条件变量能做的事!