C++多线程中的join, detach, joinable

本文介绍了C++11中的多线程编程,包括如何使用thread创建线程,以及join、detach和joinable函数的作用。join用于使主线程等待子线程结束并回收资源,detach则使线程分离,独立运行。joinable函数用于检查线程是否可以被join或detach。
摘要由CSDN通过智能技术生成

thread是C++11中提供多线程编程的模块,使用的时候需要包含头文件。

首先我们先来看一下简单的hello world的多线程的代码(win10下vs2019)

这个创建的方式就是以函数作为一个入口,创建了一个子线程,那么创建的语句就是第11行代码所示,所传入的参数就是入口的函数名。在创建了这个子线程之后,这个子线程就开始运行了,同时主线程也不停的往下运行,当碰到t.join()这句代码的时候,就表示主线程需要等待子线程运行结束回收掉子线程的资源后,再往下运行,否则就会产生一种情况:当子线程还没有运行完主线程先运行完了,那么就会结束这个进程,从而中断了子线程的运行。因此join()函数的作用就是使主线程在此阻塞,等待子线程运行结束并回收其资源,再往下运行。

当然我们可以用this_thread::get_id()这个函数来验证这个子线程和主线程是不同的两个线程,结果如下图所示

可见两个线程的id是不同的。

然后我们再看一下下面的这个图,用的是detach函数:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值