【发布时间】:2012-11-14 21:49:53
【问题描述】:
我目前正在编写一个多线程程序,有时可能会根据某些情况创建线程。如果创建了这个线程,它需要独立于所有其他线程运行,我不能阻止任何其他线程等待它加入。生成的线程运行的时间长度各不相同;有时可能需要几个小时。
我已经尝试生成线程并在类的析构函数中加入一个工作正常的连接,但是如果生成的线程中的代码在调用析构函数之前完成了很长时间(大约 99% 的时间) ) 我希望线程杀死自己释放所有资源等。
我研究过为此使用 detach,但是您不能重新加入一个分离的线程,并且如果在该线程完成之前调用析构函数,那么生成的线程将不会完成并可能产生灾难性的后果。
是否有任何可能的解决方案可以确保线程在类被破坏之前完成,并允许它在线程完成工作后立即加入?
我正在使用 boost/c++11 进行线程处理。任何帮助都将不胜感激。
谢谢
【问题讨论】:
-
已编辑。任何帮助都会非常感谢
-
@JoachimPileborg 谢谢会调查它
-
为什么你认为一个已经结束的线程并没有销毁它所有的资源?
-
@StephaneRolland 我需要确保当这个线程启动时它完全完成。如果它在完成中途停止,将对我的整个项目产生很多不利影响。我并没有说明完成的线程不会破坏资源。
标签: c++ multithreading boost c++11