【问题标题】:Boost Thread Cancelling提升线程取消
【发布时间】:2010-11-05 14:39:50
【问题描述】:

您可以像取消 pthread 一样取消 Boost Thread 吗?

我正在编写一个简单的看门狗来在工作线程崩溃时终止它们,并且似乎没有办法简单地取消 Boost 线程库中的线程。

【问题讨论】:

    标签: c++ boost-thread


    【解决方案1】:

    他们不支持取消,这是一件好事,因为它会导致各种微妙的问题。

    查看涵盖线程中断和 boost::thread_interrupted 异常的文档部分,并设计一些可以让您完成您想要的事情同时还可以清理的东西。

    【讨论】:

    • 如果线程卡在循环中,增强线程中断似乎对您没有帮助,这是我试图防止的事情之一。当我放弃可移植性时,我开始认为我最好使用 pthread 清理处理程序。
    • 或者在循环的某处放置一个中断点。它不应该对性能造成太大影响,尤其是在线程已经长时间运行的情况下。其余的中断基础设施已经到位。
    【解决方案2】:

    他们不支持开箱即用的取消(正如 Duck 所指出的),但是根据工作线程内部正在进行的处理,我会考虑使用 @ 987654321@ 通知线程它应该尽早(干净地)完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      • 2018-07-03
      • 2011-06-18
      • 2012-05-16
      相关资源
      最近更新 更多