C 分离的pthread会死吗?
被分离的pthread会死吗?操作系统是否可以在不停止主进程的情况下终止线程?如果在完成其工作后将分离的线程编程为终止线程,那么它将终止。完成工作后,函数可以简单地结束或调用C 分离的pthread会死吗?,c,pthreads,posix,C,Pthreads,Posix,被分离的pthread会死吗?操作系统是否可以在不停止主进程的情况下终止线程?如果在完成其工作后将分离的线程编程为终止线程,那么它将终止。完成工作后,函数可以简单地结束或调用pthread\u exit 通过使用pthread\u kill发送信号,或使用全局标志或IPC形式(如管道或消息队列),可以从另一个线程终止分离的线程。请注意,“killed”一词在英语和编程中的多重含义之间存在歧义。线程需要编程以对所使用的任何通知机制作出反应。例如,应为线程安装一个信号处理程序,并使用pthread\
pthread\u exit
通过使用pthread\u kill
发送信号,或使用全局标志或IPC形式(如管道或消息队列),可以从另一个线程终止分离的线程。请注意,“killed”一词在英语和编程中的多重含义之间存在歧义。线程需要编程以对所使用的任何通知机制作出反应。例如,应为线程安装一个信号处理程序,并使用pthread\u kill
或pthread\u sigqueue
发送非进程范围的信号,如SIGUSR1。最后,pthreads有一个取消机制,您可以使用pthread\u cancel
和相关调用来使用它。在所有这些场景中,关键是线程必须被编程来处理一个优雅地死亡的请求,但“分离”并不意味着“不可访问”
如果信号的处理是stop、continue或terminate,它将影响整个进程,而不是单个线程。
pthread\u kill
不会杀死任何东西,就像kill
不会杀死任何东西一样。它发出一个信号。一些信号的默认动作是终止整个进程(从来没有一个线程);一个(SIGKILL
)总是导致进程终止。任何线程如果不从其启动函数返回、调用pthread\u exit
或根据取消请求执行操作,就无法“死亡”。我知道。我要下班了。稍后我会给出更完整的答案。谢谢。我在寻找一个线程是否可以在父进程不停止的情况下意外停止。