admin管理员组

文章数量:1599758

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