Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 分离的pthread会死吗?_C_Pthreads_Posix - Fatal编程技术网

C 分离的pthread会死吗?

C 分离的pthread会死吗?,c,pthreads,posix,C,Pthreads,Posix,被分离的pthread会死吗?操作系统是否可以在不停止主进程的情况下终止线程?如果在完成其工作后将分离的线程编程为终止线程,那么它将终止。完成工作后,函数可以简单地结束或调用pthread\u exit 通过使用pthread\u kill发送信号,或使用全局标志或IPC形式(如管道或消息队列),可以从另一个线程终止分离的线程。请注意,“killed”一词在英语和编程中的多重含义之间存在歧义。线程需要编程以对所使用的任何通知机制作出反应。例如,应为线程安装一个信号处理程序,并使用pthread\

被分离的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
或根据取消请求执行操作,就无法“死亡”。我知道。我要下班了。稍后我会给出更完整的答案。谢谢。我在寻找一个线程是否可以在父进程不停止的情况下意外停止。