1.介绍condition_variable,只是一种通讯的方法,配合mutex就能安全传输某种信号,告诉其他线程条件满足
#include <condition_variable.>
全局变量
2.main函数流程
1)程序启动后,塞一堆东西到global这个list里面去,
2)线程启动开始往下面跑
3)ready = true
4) 主线程在往globalList里插进去字符串,每对globalList改变后,再用cv.notify_one()通知一下(唤醒一个线程)
5)判断globalList是否为空,就是消息是否都处理结束,cv.notify_all()唤醒全部线程
3.这里用的unique_lock,与lock的区别:
cv.wait()讲unique_lock的锁释放掉,等待的过程中是不加锁的,等待后面的条件,后面条件达成就往下面跑,unique_lock这时会重新获得lock(mutex)