4

我的程序中有一些线程正在运行。我想杀了他们。我能做些什么?另外,我想获取程序中运行的线程当前。

4

4 回答 4

1

这个问题在这里不是很清楚。此外,最好用 pthread_exit()终止线程。但是如果你仍然想杀死线程,你可以使用pthread_kill()但检查它的返回值,因为它可能会失败,在这种情况下它会返回一个错误号,成功时它返回 0。而pthread_self()返回的线程 id当前正在运行的线程。如果您希望线程在特定状态或特定类型被取消,您可以使用pthread_setcancelstate()pthread_setcanceltype( )。希望这可以帮助你。

于 2013-04-19T08:54:20.580 回答
1

您必须找出在某处创建线程的位置,例如线程句柄。为了杀死他们,你需要pthread_create(&pid....) pidpthread_kill

要检查当前正在运行的线程,您可以使用pthread_self

于 2013-04-19T07:23:12.147 回答
0

保存创建线程的句柄。线程实现通常高度依赖于操作系统,提供更多信息。

对于 linux(您需要在创建时保存的句柄): http: //man7.org/linux/man-pages/man3/pthread_kill.3.html

可能有某种方法可以枚举进程的所有线程。但我认为没有必要,只需跟踪您的线程即可。

于 2013-04-19T07:15:16.607 回答
0

杀死进程会自动杀死它已经启动的线程。但是要杀死特定线程,请获取 pthread_create 的 id 并在 pthread_kill 中使用它。这是一个有用的链接:

https://computing.llnl.gov/tutorials/pthreads/#PthreadsAPI

于 2013-04-19T12:53:41.930 回答