线程是通过构造
std::thread
对象来开始的,该对象指定了线程上要运行的任务,std::thread
可以与任何可调用类型一起工作,例如:
#include <iostream>
#include <thread>
using namespace std;
void Work()
{
cout << "hello world" << endl;
}
int main()
{
std::thread myThread(Work);
myThread.join(); // 阻塞等待线程执行完成
return 0;
}
一旦开始了线程,你就需要显示决定是要等它执行完成,还是让它自行运行。如果在
std::thread
对象被销毁前未做决定,那么你的程序会被终止(std::thread
的析构函数调用std::terminate()
)。因此。即便在异常存在的情况下,确保线程正确地结合或是分离都是你的当务之急。