如何取消(不终止)提升线程?

时间:2013-09-25 20:32:27

标签: multithreading boost

我喜欢C#CancellationTokenSource,它允许我终止Task,如this article所示。

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

1 个答案:

答案 0 :(得分:0)

您可以使用boost thread interruption

  

可以通过调用interrupt()成员来中断正在运行的线程   相应的 boost :: thread 对象的功能。当。。。的时候   中断的线程接下来执行指定的中断之一   点(或当它在执行一个时当前被阻止)   中断启用,然后boost :: thread_interrupted异常将   被抛断在被打断的线程中。如果没有被抓住,这将导致   中断线程的执行终止。和任何一样   其他异常,堆栈将被解除,而析构函数则为   将执行自动存储持续时间的对象。