【问题标题】:how to cancel (not terminate) boost thread?如何取消(不终止)提升线程?
【发布时间】:2013-09-25 20:32:27
【问题描述】:

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

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

【问题讨论】:

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

标签: multithreading boost


【解决方案1】:

您可以使用boost thread interruption

可以通过调用 interrupt() 成员来中断正在运行的线程 boost::thread 对象的函数。当。。。的时候 被中断的线程接下来执行指定的中断之一 点(或者如果它当前在执行一个时被阻止) 启用中断,然后会出现 boost::thread_interrupted 异常 在被中断的线程中抛出。如果不被抓住,这将导致 被中断的线程的执行终止。与任何 其他异常,堆栈将被展开,并且析构函数 自动存储期限的对象将被执行。

【讨论】:

    猜你喜欢
    • 2010-11-05
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    相关资源
    最近更新 更多