C ++:如何在没有特定“中断点”的情况下干净地终止线程

时间:2015-11-25 11:01:24

标签: c++ winapi visual-c++

有没有办法以这样的方式中断/终止C ++线程,以便正确调用所有析构函数? Boost有way来中断线程,但它要求我在代码中定义“中断点”。我没办法定义“中断点”,因为在线程中运行的代码是未知的。

P.S。目标体系结构是使用MSVC编译的Intel x86_64上的Windows x64,因此将采用基于WinAPI / MSVC的解决方案: - )

1 个答案:

答案 0 :(得分:1)

如果将在线程中运行的代码未知或超出您的控制范围,那么没有干净的方法来终止该线程。唯一干净的方法是让代码在该线程中运行。

如果您可以协调一种方法来传递您需要的任何数据,那么您可以将该代码放在一个单独的进程中。然后,您可以在需要时终止该进程,这在发布操作系统资源方面基本上是干净的,但是在未知代码运行析构函数的意义上它不会是干净的。