微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

在我看来,这意味着一旦我分离了一个线程,我基本上必须祈祷在主线程从main返回之前,该线程已完成执行,否则可能会发生不良情况。这个对吗?还是我错过了什么?

解决方法

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

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

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

不要触摸线程中的全局状态,也不要触摸main中的任何自动变量。否则,请不要分离。

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

不完全是。您不一定需要关心线程完成。如果您确实需要维护,请不要分离该线程。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。