我不需要正确终止线程,也不需要使其响应“终止”命令。我对使用纯C ++ 11强制终止线程感兴趣。
您可以std::terminate()
从任何线程进行调用,并且您所引用的线程将强制终止。
您可以安排~thread()
在目标线程的对象上执行,而无需干预join()
或detach()
对该对象执行。这将与选项1相同。
您可以设计一个具有析构函数的异常,该析构函数会引发异常。然后安排目标线程在要强制终止该异常时引发此异常。这方面的棘手部分是使目标线程抛出此异常。
选项1和2不会泄漏进程内资源,但它们会终止每个线程。
选项3可能会泄漏资源,但部分协作是因为目标线程必须同意引发异常。
C ++ 11(我知道)没有可移植的方式来非合作地杀死多线程程序中的单个线程(即不杀死所有线程)。没有动机去设计这样的功能。
阿std::thread
可具有该成员函数:
native_handle_type native_handle();
您可能可以使用它来调用依赖于OS的函数来执行所需的操作。例如,在Apple的OS上,此功能存在并且native_handle_type
为pthread_t
。如果成功,则很可能会泄漏资源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句