C++多线程学习

本文围绕C++多线程学习展开,介绍了使用Thread创建线程的方法,以及join()、detach()、joinable()的功能和使用注意事项。还阐述了用类对象和lambda表达式等其他方式创建线程,指出使用detach()可能带来的问题及解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++多线程学习

1.创建线程的方法Thread,引用头文件#include< thread>,创建线程后,线程开始执行。
2.join()阻塞主线程,直到子线程执行完毕,再返回主线程。
3.detach()切断主线程和子线程联系,不要求一定完成子线程,一般情况下不使用detach(),使用时可能发生未知错误。
4.使用detach()后,不能join(),同样使用join()后,也不可以使用detach(),如果使用会产生异常。
5.joinable()判断当前线程是否可以join或者detach,如果可以返回true,否则返回false。
用其他方式创建线程
1) 用类对象创建线程(可调用对象);
当用detach()可能带来意外的现象,当成员函数使用引用时,在主线程执行完毕后,系统的局部变量回收,可能导致输出未知错误。
使用detach()后,将对象复制到系统空间中,主线程执行完毕后,不会对输出造成影响。(可以用析构函数证明)。所以只要成员函数中没有指针和引用就不会出现问题。
2) 用lambda表达式
Auto mylamthread = [] {表达式}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值