gpt4 book ai didi

linux - 如果线程实际上只是后台进程,那么 linux 如何在进程退出时清理线程?

转载 作者:太空狗 更新时间:2023-10-29 12:12:51 28 4
gpt4 key购买 nike

我的理解是,线程和进程在 Linux 上实际上是同一个实体,区别在于它们之间共享的内存。我发现如果父进程和子进程之间没有明确的沟通,很难确保子进程被正确清理。我希望能够使用与线程类似的心智模型运行子进程,因为当父进程退出时它们会自动清理,但具有进程提供的内存安全性。 Linux 如何设法自动清理线程,同样的机制可以用于子进程吗?

最佳答案

看完Linux源码,我想我有了答案。任务通过它们的任务 ID 和线程组 ID 来区分。 getpid() 实际上返回的是任务的线程组ID,对于组中的所有任务都是一样的。这让内核有一个单一可调度任务的概念,可用于实现线程。

从 glibc 2.3 开始,exit() 实际上调用了 exit_group 系统调用,而不仅仅是 exit 系统调用。此系统调用会终止线程组中的所有任务,而不仅仅是调用任务。它通过向具有相同线程 ID 的所有任务发送 SIGKILL 来实现这一点。

关于linux - 如果线程实际上只是后台进程,那么 linux 如何在进程退出时清理线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36041397/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com