2009-06-24 49 views
7

您可以像pthread一样取消一个Boost线程吗?Boost线程取消

我正在写一个简单的看门狗来终止工作线程,如果他们崩溃,并且似乎没有办法简单地取消Boost线程库中的线程。

回答

10

他们不支持取消,这是一件好事,因为它会引起各种微妙的问题。

看看文档中涵盖线程中断和boost :: thread_interrupted异常的部分,并且提供一些可以让你在清理东西的同时完成你想要的东西。

+0

看来像增加线程中断不会帮助你,如果线程卡在一个循环,这是我试图防范的事情之一。当我放弃可移植性时,我开始认为我最好使用pthread清理处理程序。 – 2009-06-25 21:15:54

2

它们不支持取消开箱即用(如指出),但是这取决于你的处理工作线程(S)中的想法,我会考虑使用boost::condition通知线程它应该尽早完成(干净)。