76-多线程编程,thread的间的交互 4_recv

1.介绍condition_variable,只是一种通讯的方法,配合mutex就能安全传输某种信号,告诉其他线程条件满足
#include
全局变量
76-多线程编程,thread的间的交互 4_recv_第1张图片

2.main函数流程
1)程序启动后,塞一堆东西到global这个list里面去,
2)线程启动开始往下面跑
3)ready = true
4) 主线程在往globalList里插进去字符串,每对globalList改变后,再用cv.notify_one()通知一下(唤醒一个线程)
5)判断globalList是否为空,就是消息是否都处理结束,cv.notify_all()唤醒全部线程

76-多线程编程,thread的间的交互 4_recv_第2张图片
3.这里用的unique_lock,与lock的区别:
cv.wait()讲unique_lock的锁释放掉,等待的过程中是不加锁的,等待后面的条件,后面条件达成就往下面跑,unique_lock这时会重新获得lock(mutex)

你可能感兴趣的:(多线程编程,多线程)