2

我喜欢 C# CancellationTokenSource,它允许我终止Task本文所示。

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

4

1 回答 1

0

你可以使用boost线程中断

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

于 2013-09-25T20:38:30.960 回答