我在程序中运行了一些线程,现在我想停止它们。请问应该怎么做?此外,我还想获取正在程序中运行的当前线程。
我在程序中运行了一些线程,现在我想停止它们。请问应该怎么做?此外,我还想获取正在程序中运行的当前线程。
pthread_create
(&pid....)
pid
是线程句柄。为了杀死它们,你需要使用 pthread_kill
。pthread_self
。pthread_cancel
吗?还是指使用信号量等来指示线程结束并使用 pthread_join
等待它结束? - Suvarna Pattayil这里的问题不是非常清楚。此外最好使用pthread_exit()终止线程。但如果您仍然想要杀死线程,可以使用pthread_kill(),但请检查其返回值,因为它可能会失败,在这种情况下它会返回一个错误号码,成功时返回0。而pthread_self()返回当前正在运行的线程的线程ID。如果您希望在线程处于特定状态或特定类型时取消线程,则可以使用pthread_setcancelstate()和pthread_setcanceltype()。希望这能帮助您。
保存创建线程的句柄。 线程实现通常高度依赖于操作系统,提供更多信息。
对于Linux(您需要在创建时保存的句柄): http://man7.org/linux/man-pages/man3/pthread_kill.3.html
可能有一些方法可以枚举进程中的所有线程。但我认为这并不是必要的,只需跟踪您的线程即可。
自动终止进程会终止它启动的线程。但是要终止特定的线程,需要获取pthread_create的ID并在pthread_kill中使用。
这里有一个有用的链接:
kill
命令怎么样?你想要什么? - wallyk