Boost线程取消

7

您是否可以像取消pthread一样取消Boost Thread?

我正在编写一个简单的看门狗程序,如果工作线程崩溃,就会终止它们。但是,在Boost Thread库中似乎没有简单地取消线程的方法。

2个回答

10

他们不支持取消操作,这是一件好事情,因为它可能导致各种微妙的问题。

查看涵盖线程中断和boost::thread_interrupted异常的文档部分,并构建一些内容,使您能够实现所需的功能并清理代码。


似乎boost线程中断无法帮助您解决线程陷入循环的问题,这是我试图防止的一种情况。虽然我放弃了可移植性,但我开始认为最好使用pthread清理处理程序。 - Justin Scheiner
4
可以在循环中某个位置设置一个中断点(或多个)。如果线程已经长时间运行,这应该不会对性能产生太大影响。同时,其他的中断机制已经准备好了。 - Duck

2

Duck所指出的那样,他们不自带支持取消功能。但是,根据您的工作线程内部处理情况,我建议使用boost::condition来通知线程,在最早的机会下应该(干净地)完成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接