分离的 pthread 会死掉吗?

标签 c pthreads posix

分离的 pthread 会死亡吗?操作系统可以在不停止主进程的情况下杀死线程吗?

最佳答案

如果你将一个分离线程编程为在完成其工作后终止,那么它就会终止。完成工作后,该函数可以简单地结束或调用pthread_exit

您可以通过使用 pthread_kill 发送信号或使用全局标志或 IPC 形式(例如管道或消息队列)来终止与另一个线程分离的线程。请注意,“killed”这个词在英语和编程中的多种含义都是不明确的。需要对线程进行编程以对使用的任何通知机制使用react。例如,应该为线程安装信号处理程序和非进程范围的信号,例如使用 pthread_killpthread_sigqueue 发送的 SIGUSR1。最后,pthreads 有一个取消机制,您可以使用 pthread_cancel 和相关调用来使用。在所有这些场景中,要点是必须对线程进行编程以处理优雅死亡的请求,但“分离”并不意味着“不可访问”。

如果信号的处理是停止、继续或终止,它将影响整个进程而不是单个线程。

关于分离的 pthread 会死掉吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13425503/

相关文章:

c - 了解posix屏障机制

c - 线程中的 sleep() 导致 main 也进入休眠状态

c++ - POSIX线程体验? (或者推荐更好的)

c - 无法获得正确的纳秒时间间隔

Java/C 如何修改zip 文件头?

c - 是否可以让所有特定类型的结构引用另一个结构的同一实例? C

python - 将Cython生成的.c文件编译成exe文件

c - "long int num=24;"和 "int num=24L;"做同样的事情吗?

c++ - 了解 posix 进程间信号量

套接字的描述符可以转换为文件指针吗?