C++多线程(一)

2021-03-03 07:26

阅读:716

标签:func   tac   接管   highlight   作用   异常   ace   pac   etc   

#include
#include
using namespace std;

void func()
{
	cout th.join();
	cout 

输出:

技术图片

 

 

分析:

技术图片

 

 主线程先执行,到了th.join()时阻塞住,创建了一个新的子线程,执行子线程,子线程执行完,阻塞解除,执行主线程至结束。

 

对以上代码进行改动:

#include
#include
using namespace std;

void func()
{
	cout th.detach();
	cout 

 

输出结果:

技术图片

 

 分析:

把join换成detach作用是使得主线程不会阻塞等待子线程执行结束。也就是说主线程可以先执行结束。而在子线程中的thread对象会被C++运行时库接管,也就是说运行时库负责清理子线程相关的资源。

注意点:

正对一个线程,一旦调用了detach,则不能再次调用join,否则会导致程序运行异常。

 

利用joinable可以判断是否可以调用join或者detach

 

C++多线程(一)

标签:func   tac   接管   highlight   作用   异常   ace   pac   etc   

原文地址:https://www.cnblogs.com/SunShine-gzw/p/14399071.html


评论


亲,登录后才可以留言!