C++并发编程笔记01
1. 启动线程的几种方式
头文件
#include <thread>
方式1:普通函数
void do_some_work();
std::thread my_thread(do_some_work);
方式2:可调用对象
class background_task
{
public:
void operator()() const
{
do_some_work();
do_some_other_work();
}
};
background_task f;
std::thread my_thread(f);
方式3:临时函数对象
std::thread my_thread((background_task()));
方式4:使用列表初始化
std::thread my_thread{background_task()}; //花括号
方式5:使用lamda表达式
std::thread my_thread([]{
do_some_work();
do_some_other_work();
});
2. 一旦启动了线程,要明确是等待它结束,还是任由它独立运行。等待
结束用join(),任由它独立运行用detach()。
关于join的理解:启动线程后,新线程与原线程分叉,独立运行,
过一段时间再汇合,所有用join这个单词,其实是汇合的意思。
也可以理解为一根线在某个地方分叉,过一段时间又合为一根,
所以是join。