【问题标题】:Is it possible to kill a thread using boost::thread?是否可以使用 boost::thread 杀死线程?
【发布时间】:2013-07-03 18:53:39
【问题描述】:

对于我正在处理的程序,我正在尝试添加一个取消功能,它应该会立即终止所有工作线程。

我想知道这是如何实现的。我知道这可能会导致损坏状态。

(我还可以访问所有工作线程。我只是找不到强制杀死它们的方法。)

如果 boost::thread 库无法实现,我不想知道!

【问题讨论】:

  • 不分青红皂白地谋杀线程是个坏主意。按照下面的人说的做。
  • “立即杀死一个线程”是什么意思?你可以拔掉电脑的插头,但我怀疑你的想法是这样的。
  • 我的意思是你会像杀死一个进程/程序一样杀死它。这意味着无论它在哪里,它都会停止工作并且不再存在。

标签: c++ multithreading boost


【解决方案1】:

最好的方法可能是 interruption point 。定义它。并且您的代码将在到达最近的中断点时停止。

【讨论】:

  • 这是不可能的,因为我使用的库完成了大部分工作。一个函数调用可能需要几个小时。 (取决于我如何设置一切)
  • @YannickSchinko 抱歉,据我所知,没有其他简单的解决方案。您应该以其他方式设置它。
【解决方案2】:

根据这里的答案: Kill a blocked Boost::Thread

使用 native_handle 的平台特定代码可能是您唯一的选择。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
  • 2014-05-10
  • 1970-01-01
  • 2011-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多