【发布时间】:2021-02-14 08:21:37
【问题描述】:
在我看来,在我看来,没有可移植的方法来保证分离的std::thread 在主线程完成执行后不会导致内存泄漏甚至未定义的行为。显然,一旦分离就无法加入,似乎没有一种机制来检测分离的线程是否从主线程中退出,并且 STL 没有提供pthread_exit 的类似物。
在我看来,这意味着一旦我分离一个线程,我基本上必须祈祷它在主线程从main 返回之前完成执行,否则可能会发生坏事。它是否正确?还是我错过了什么?
【问题讨论】:
-
您确定需要分离的
thread吗? -
您使用的是哪个 c++ 标准?
-
@Iman:C++11,我已经编辑了这个问题。是的,我敢肯定,我知道这是不典型的,但我的代码中有一部分我真的不能同步等待线程完成执行。这在 99% 的情况下都不是问题,但有时线程会继续执行直到 main 结束,此时我不知道如何处理它。
-
在 main() 结束时对 std::condition_variable 使用等待,当它完成时您在线程代码中通知它。线程对象是否仍然附加并不重要。
-
@HansPassant:这似乎是明智的,我会试试看。
标签: c++ c++11 concurrency