如何终止C 11中的线程?

我不需要正确终止线程,或使其响应“终止”命令。我有兴趣终止线程强有力地使用纯C 11。
>你可以从任何线程调用std :: terminate(),你所指的线程将强制结束。
>你可以安排〜thread()在目标线程的对象上执行,而不需要在该对象上插入join()和detach()。这将具有与选项1相同的效果。
>你可以设计一个异常,它有一个抛出异常的析构函数。然后安排目标线程抛出这个异常,当它被强制终止。这个棘手的部分是让目标线程抛出这个异常。

选项1和2不会泄漏进程内资源,但它们会终止每个线程。

选项3可能泄漏资源,但是部分协作,因为目标线程必须同意抛出异常。

在C 11中没有可移植的方式(我知道)在多线程程序中不合作地杀死单个线程(即不杀死所有线程)。没有动机设计这样的功能。

std :: thread可能有这个成员函数:

native_handle_type native_handle();

你可能可以使用它来调用一个依赖于操作系统的函数来做你想要的。例如在苹果的操作系统上,这个函数存在,native_handle_type是一个pthread_t。如果你成功,你很可能泄漏资源。

http://stackoverflow.com/questions/12207684/how-do-i-terminate-a-thread-in-c11

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何终止C 11中的线程?