admin管理员组文章数量:1599529
1、 C++ 11 线程认识
在C++ 11标准库中提供了一种新的线程创建方式:
thread t(func, parm);
① t.detach();
② t.join();
detach 顾名思义即为工作线程和 UI 线程脱离,是一种异步操作。
join 意味着阻塞,等待 func 结束才能继续往下执行。
而刚好在 C++ 11 中引入了 lambda 表达式,则两者结合写一个异步线程操作就很简单了。
thread t([](parmType parm){
// your code
}, parm);
t.detach();
2、 C++ 11 线程通信
第一步我们已经学会创建一个新的线程了。但只是创建个工作线程干干耗时的活属于低级操作了,学习多线程还有个很重要的点便是掌握多线程间的通信。
假设我们拥有线程 A 和 B,线程 B需要在某个时刻才开始执行,而这个时刻由线程 A 触发。
一种方法是在线程 B 内使用 while 循环+flag 无线轮转,等待线程 A 更改 flag 的值,然后 B 满足 flag 的条件被触发。如下:
#include <iostream
本文标签: 多线程通信日志waitconditionvariable
版权声明:本文标题:C++ 多线程通信之 wait、notify、condition_variable 学习日志 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1728324259a1154226.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论