Multithreading 分离线程和守护进程线程之间的区别是什么?

Multithreading 分离线程和守护进程线程之间的区别是什么?,multithreading,pthreads,daemon,detach,Multithreading,Pthreads,Daemon,Detach,我知道所有守护进程线程都是分离的线程,但为什么所有分离的线程都不是守护进程呢 假设线程“main”创建线程“A”(未分离),线程“A”创建线程“B”(分离)。线程“A”能否在“B”继续运行时退出 PS:我问的是关于pthreads的问题,但请无论如何回答。我认为从内存模型的角度来看,线程A可以退出,而线程B可以继续运行。此外,若并没有用户线程执行,程序将退出。。。或者您可以认为只有守护进程线程仍然存在,因此应用程序将以不同的方式结束也许您应该首先阅读 详述 守护进程线程 通常在C/C++(Lin

我知道所有守护进程线程都是分离的线程,但为什么所有分离的线程都不是守护进程呢

假设线程“main”创建线程“A”(未分离),线程“A”创建线程“B”(分离)。线程“A”能否在“B”继续运行时退出


PS:我问的是关于pthreads的问题,但请无论如何回答。

我认为从内存模型的角度来看,线程A可以退出,而线程B可以继续运行。此外,若并没有用户线程执行,程序将退出。。。或者您可以认为只有守护进程线程仍然存在,因此应用程序将以不同的方式结束

也许您应该首先阅读

详述

守护进程线程

通常在C/C++(Linux环境)中,可以使用fork()创建守护进程fork()通过复制调用进程来创建新进程。在这里,父进程将退出,留下子进程。此子进程从控制终端分离,重新打开所有{stdin,stdout,stderr}到/dev/null,并将工作目录更改为根目录。(当然是基于旗帜)。在Linux下,fork()是使用copy-on-write页实现的,因此它带来的唯一损失是复制父级的页表以及为子级创建唯一的任务结构所需的时间和内存

分离的线程

虽然Pthread detached行为不同(1)分离的线程一旦分离就不能重新连接(2)detached属性仅确定线程终止时系统的行为;如果进程使用exit终止(或者如果主线程返回,则等效地终止),它不会阻止线程终止。pthread_detach()函数将线程标识的线程标记为已分离。当分离的线程终止时,其资源将自动释放回系统,而不需要另一个线程与终止的线程连接