《白话C++》第12章并发,Page543 12.3.2线程回汇合③ joinable

3.joinable

想要创建完一个线程之后,就不再搭理它,最简单的办法还是“一不做二不休”:

...
    std::thread trd;
...

代码创建了一个线程对象,但没有为它指定任何目标任务,可以称之为“空线程对象”。空线程对象无事可做,因此不会创建实际线程,因此它不仅不需要,而且不可以调用join()方法。

空的线程对象不能调用join(),已经完成join()调用的线程对象也不能重复调用。std::thread类提供joinable()方法,用于判断一个线程对象是否需要并且可以汇合。

下面这里子来自

cppreference.com网站

一个值得所有C++程序员经常浏览的好网站

除非就是为了实现完全不操心上层业务的线程管理功能,否则我们应该完全放弃使用joinable()。

当使用async(异步)时,我们必须永远清楚对应的future对象需不需要get(),

当使用thread以实现对特定并发业务的支撑时,必须永远清楚这个thread对象当前是否joinable。

一旦你需要记住joinable()方法帮你搞清楚某个线程是否需要以及可以汇合,你一定是乱了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值