运行结果如下:

文章插图
值得注意的是pthread_cond_wait在阻塞的时候,会释放已经掌握的互斥锁,等到被唤醒的时候,重新上锁 。
举个例子:

文章插图
其实pthread_cond_wait内部隐藏一次解锁的过程,如果是fun1先运行,num被上锁,会阻塞在第24条语句,但是pthread_cond_wait会先解锁,释放掉num资源,但依然阻塞在24行,此时fun2加锁,改变条件,函数pthread_cond_signal会唤醒pthread_cond_wait函数,此时num会再次被上锁,然后解锁,所以pthread_cond_wait其实在内部做了一次解锁的操作 。
条件变量其实很简单,遇到pthread_cond_wait线程就会阻塞在阻塞队列,当pthread_cond_signal调用的时候,就会唤醒在阻塞队列中的线程,继续执行下面的代码 。
经验总结扩展阅读
- 1500大卡相当于多少食物
- 为什么二手房越来越难卖
- 龙眼泡酒配方
- 香菇蒸多久能蒸熟
- 一条香烟不拆封能放多久
- 2023年农历七月十二适不适合结婚
- 2023年农历七月十六可不可以结婚农历二零二三年七月十六能不能结婚
- 2023年农历七月二十结婚会幸福吗
- 2023年农历七月二十一是不是结婚吉日 今天可以迎亲吗
- 2023年农历七月二十二结婚吉利吗 是黄道吉日吗