2013-09-25 54 views
2

我喜欢C#CancellationTokenSource它允许我终止Task,如this article所示。如何取消(不终止)boost线程?

什么是类似的算法取消boost::thread?我不想“杀死”或“终止”线程。相反,我想“请求”任务完成。然后我需要等到任务完成。

+0

如果你在windows上使用while循环,并且可以在外部设置一个windows事件是非常有效的。 – Serdalis

回答

0

可以使用boost thread interruption

正在运行的线程可以通过调用相应的升压的中断()成员函数 ::线程对象被中断。当 中断的线程接下来执行指定中断 点(或者如果它当前被阻止,同时执行一个)中的一个,并且启用 中断,则将在被中断的线程中抛出boost :: thread_interrupted异常。如果没有被捕获,这将导致 中断线程的执行终止。与其他异常一样,堆栈将被解开,并且会自动存储持续时间为 的对象的析构器被执行。