C++thread的两种“死法”(C++多线程相关)

thread默认析构函数是调用了abort()让程序中止
在这里插入图片描述
子线程可以自己管理资源也可以在子线程结束时自动将线程杀死,需要程序员显示指定用的是哪种行为,一般都自己来管理资源由j.join()来结束线程,在join前要判断是否joinable()
在这里插入图片描述

另一种让子线程代码执行完自动杀死线程,调用detach()即可
生命周期短的用detach,比整个生命周期是短的,不然可能主函数自己的析构函数没调用
在这里插入图片描述
在这里插入图片描述
有的时候如果在join前要抛出异常时可以自己定义线程保护类
在这里插入图片描述

发布了137 篇原创文章 · 获赞 33 · 访问量 1597

猜你喜欢

转载自blog.csdn.net/qq_39885372/article/details/103964744