创建线程
案例1:如何创建线程
#include <thread>
void do_some_work();
std::thread my_thread1(do_some_work);//函数对象会复制到新线程的存储空间中,函数对象的执行和调用都在线程的内存空间中进行
class background_task
{
public:
void operator()() const
{
do_something();
do_something_else();
}
};
background_task f;
std::thread my_thread2(f);//可调用对象f
std::thread my_thread3((background_task()));//std::thread my_thread(background_task())不可用,使用临时变量该语句会被编译器判定为函数声明
std::thread my_thread4{background_task()};//新的初始化语法
案列2:线程的加入、分离
#include <iostream>
#include <thread>
void do_some_work()
int main()
{
cout<<"run do_some_work"<<endl;
std::thread my_thread(do_some_work);//创建线程
my_thread.join();//加入线程,主线程会等待子线程结束
//my_thread.detach() 分离线程,主线程不会等待子线程结束
return 0;
}