我喜欢C#CancellationTokenSource
,它允许我终止Task
,如this article所示。
取消boost::thread
的类似算法是什么?我不想“杀死”或“终止”该线程。相反,我想“请求”任务完成。然后我需要等到任务完成。
答案 0 :(得分:0)
您可以使用boost thread interruption
可以通过调用interrupt()成员来中断正在运行的线程 相应的 boost :: thread 对象的功能。当。。。的时候 中断的线程接下来执行指定的中断之一 点(或当它在执行一个时当前被阻止) 中断启用,然后boost :: thread_interrupted异常将 被抛断在被打断的线程中。如果没有被抓住,这将导致 中断线程的执行终止。和任何一样 其他异常,堆栈将被解除,而析构函数则为 将执行自动存储持续时间的对象。