分离的 pthread 会死亡吗?操作系统可以在不停止主进程的情况下杀死线程吗?
最佳答案
如果你将一个分离线程编程为在完成其工作后终止,那么它就会终止。完成工作后,该函数可以简单地结束或调用pthread_exit
。
您可以通过使用 pthread_kill
发送信号或使用全局标志或 IPC 形式(例如管道或消息队列)来终止与另一个线程分离的线程。请注意,“killed”这个词在英语和编程中的多种含义都是不明确的。需要对线程进行编程以对使用的任何通知机制使用react。例如,应该为线程安装信号处理程序和非进程范围的信号,例如使用 pthread_kill
或 pthread_sigqueue
发送的 SIGUSR1。最后,pthreads 有一个取消机制,您可以使用 pthread_cancel
和相关调用来使用。在所有这些场景中,要点是必须对线程进行编程以处理优雅死亡的请求,但“分离”并不意味着“不可访问”。
如果信号的处理是停止、继续或终止,它将影响整个进程而不是单个线程。
关于分离的 pthread 会死掉吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13425503/