标签:执行 ret names ios 使用 方法 控制 控制台 main
#include<iostream>
#include<thread>
using namespace std;
void proc()
{
cout << "我是子线程" << endl;
}
int main()
{
thread th2(proc);
th2.join();
cout << "我是主线程" << endl;
return 0;
}
输出:
main()函数为主线程,需要把子线程的工作内容放到一个函数中(proc()),主线程中通过thread th2(proc)语句创建子线程,该语句执行完毕子线程就已经开始运行。此时创建了一个名为th2的子线程,该子线程的工作内容为执行函数proc中的内容。
th2.join()表示阻塞主线程,等待子线程执行完毕。
不执行th2.join()的后果:主线程已经结束运行,子线程还未执行完毕,会报错。
如果不想阻塞在这里就将join()换成使用线程的detach()方法,将线程与线程对象分离,线程就可以继续运行下去,并且不会造成影响。
#include<iostream>
#include<thread>
using namespace std;
void proc()
{
cout << "我是子线程" << endl;
}
int main()
{
thread th2(proc);
th2.detach();
cout << "我是主线程" << endl;
return 0;
}
输出:
此时,主线程已经结束运行,子线程还未执行完毕,不会报错。但是,主线程结束后子线程的输出就不会显示到控制台。
标签:执行 ret names ios 使用 方法 控制 控制台 main
原文地址:https://www.cnblogs.com/zizbee/p/13499650.html