分离的 pthread 会死吗?线程可以在不停止主进程的情况下被操作系统杀死吗?
问问题
1470 次
1 回答
1
如果您将一个分离的线程编程为在完成其工作后死亡,那么它将会死亡。在完成其工作后,该函数可以简单地结束或调用pthread_exit
。
您可以通过发送带有pthread_kill
或使用全局标志或 IPC 形式(如管道或消息队列)的信号来终止与另一个线程分离的线程。请注意,“杀死”这个词在英语和编程中的多重含义之间是模棱两可的。需要对线程进行编程以对使用的任何通知机制做出反应。例如,应为线程安装信号处理程序,并使用pthread_kill
或发送非进程范围的信号,例如 SIGUSR1 pthread_sigqueue
。最后,pthreads 有一个取消机制,您可以使用 usingpthread_cancel
和相关调用。在所有这些场景中,重点是必须对线程进行编程以处理优雅地终止的请求,但“分离”并不意味着“无法访问”。
如果信号的处置是停止、继续或终止,它将影响整个进程,而不是单个线程。
于 2012-11-16T22:49:07.833 回答