繁体   English   中英

如何保证分离的 C++ 线程的终止?

[英]How to guarantee termination of detached C++ thread?

经过一些阅读,在我看来,没有可移植的方法来保证分离的std::thread一旦主线程完成执行不会导致内存泄漏甚至未定义的行为。 一旦分离,它显然无法加入,似乎没有一种机制来检测分离的线程是否从主线程退出,并且 STL 不提供pthread_exit的类似物。

在我看来,这意味着一旦我分离了一个线程,我基本上必须祈祷在主线程从main线程返回之前已经完成执行,否则可能会发生坏事。 这样对吗? 或者我错过了什么?

保证分离的 std::thread 不会导致内存泄漏

当 main 完成时,内存泄漏通常不是问题,因为无论如何程序都将终止。

一旦主线程完成执行,甚至未定义的行为

不要触摸线程中的全局状态,也不要触摸 main 中的任何自动变量。 或者,如果你这样做了,那就不要分离。

在我看来,这意味着一旦我分离了一个线程,我基本上必须祈祷它已完成执行

不完全的。 您不一定需要关心螺纹精加工。 如果您确实需要关心,则不要分离该线程。

如何保证分离的 C++ 线程的终止?

你不能。 最多可以通过在 main 中等待一个条件变量并在线程末尾设置该变量来保证线程已经完成了它的工作。 在大多数情况下,这是重新实现连接的复杂方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM