Effective ModernC++ 条款37:使std::thread在所有路径最后都不可结合

本文介绍了C++中std::thread对象的可结合性(joinable)和不可结合性(unjoinable)状态,强调了在所有代码路径上使线程不可结合的重要性。当可结合的线程被析构时,程序会终止。通过举例说明了不正确处理可结合线程可能导致的异常行为和调试难题,提出了使用RAII类来确保线程在超出作用域时变为不可结合状态的解决方案。
摘要由CSDN通过智能技术生成

更多C++学习笔记,关注 wx公众号:cpp读书笔记

Item 37: Make std::threads unjoinable on all paths

每个std::thread对象处于两个状态之一:可结合的joinable)或者不可结合的unjoinable)。可结合状态的std::thread对应于正在运行或者可能要运行的异步执行线程。比如,对应于一个阻塞的(blocked)或者等待调度的线程的std::thread是可结合的,对应于运行结束的线程的std::thread也可以认为是可结合的。

不可结合的std::thread正如所期待:一个不是可结合状态的std::thread。不可结合的std::thread对象包括:

  • 默认构造的std::threads。这种std::thread没有函数执行,因此没有对应到底层执行线程上。
  • 已经被移动走的
  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

举个栗子2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值