detach和join
时间: 2023-11-04 22:19:07 浏览: 96
在使用std::thread时,detach和join是对创建的线程进行操作的两种方式。
detach函数用于将创建的线程与调用detach的线程分离,并允许它们并行执行。调用detach后,该线程将成为后台线程,不再与主线程有任何关联。主线程可以继续执行后续代码而不必等待分离的线程的完成。尽管分离线程在后台执行,但必须确保分离的线程不会访问已被销毁的资源,以避免潜在的问题。
join函数用于等待创建的线程执行完毕,并回收其资源。调用join后,主线程将阻塞,直到被调用的线程执行完毕。这是一种同步操作,确保主线程在调用线程完成后继续执行。因此,在使用join函数时,需要确保主线程能够合理地等待被调用的线程的完成。
根据引用和引用的描述,detach和join的主要区别在于是否阻塞主调线程。detach不会阻塞主线程,而join会阻塞主线程。
参考: https://blog.csdn.net/ouyangfushu/article/details/80199140<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [c++11中关于std::thread的join的详解](https://download.csdn.net/download/weixin_38751537/13990981)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [C++11thread之detach()与join()的函数对比](https://blog.csdn.net/LuyaoYing001/article/details/79393560)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [多线程c++11](https://blog.csdn.net/Vince_WQ/article/details/96874920)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文