C++ 中断正在执行MKL或其他第三方函数的线程

C++ 中断正在执行MKL或其他第三方函数的线程,c++,multithreading,boost,boost-thread,intel-mkl,C++,Multithreading,Boost,Boost Thread,Intel Mkl,?如何中断正在执行MKL子例程的线程?在其他第三方库中?我的线程是用boost::thread创建的,通常我使用中断来停止我的线程(),但是如何停止执行MKL代码的线程呢?有什么想法吗 提前感谢简而言之:你不能 Boost使用的线程中断点必须协同使用,也就是说,要中断的代码需要自动触发一个可以作为中断点的函数调用。既然MKL不这么做,你就不走运了 解决这一问题的最佳方法是将问题分成不需要很长时间就能执行的小块,然后检查块处理之间的中断请求 为了完整性:一些API允许对不需要被取消线程许可的线程进

?如何中断正在执行MKL子例程的线程?在其他第三方库中?我的线程是用boost::thread创建的,通常我使用中断来停止我的线程(),但是如何停止执行MKL代码的线程呢?有什么想法吗


提前感谢

简而言之:你不能

Boost使用的线程中断点必须协同使用,也就是说,要中断的代码需要自动触发一个可以作为中断点的函数调用。既然MKL不这么做,你就不走运了

解决这一问题的最佳方法是将问题分成不需要很长时间就能执行的小块,然后检查块处理之间的中断请求

为了完整性:一些API允许对不需要被取消线程许可的线程进行暴力取消(Boost不是其中之一)。但是,使用这种方法非常危险,因为被取消的线程通常无法正确清理,因此很容易使程序处于损坏状态。如果您决定沿着这条路走下去,使用不同的进程而不是线程可能是一个更好的主意,因为强制终止进程比终止线程更不容易出错