我正在阅读线程人,并看到以下内容:
对于NPTL,进程中的所有线程都放在同一个线程组中;线程组的所有成员共享相同的PID。
我当前的架构运行在NPTL 2.17上,当我运行显示线程的htop时,我看到所有PID都是唯一的。但是为什么呢?我希望他们中的一些人(例如铬)彼此分享相同的PID?

发布于 2019-09-04 15:18:45
请参阅man gettid
gettid()返回调用者的线程ID (TID)。在单线程进程中,线程ID等于进程ID (PID,由getpid(2)返回)。在多线程进程中,所有线程都有相同的PID,但每个线程都有一个唯一的TID.,有关更多细节,请参见克隆(2)中对CLONE_THREAD的讨论。
htop展示的是TID,而不是PID。您可以使用H键切换线程的打开/关闭显示。
您还可以在PPID中启用htop列,这将显示线程主线程的PID / TID。
发布于 2019-09-04 15:23:45
谷歌的铬文献 (在这些概念上可能与Chrome类似)指出,它们使用的是“多进程架构”。您从p线程的手册页中引用的话说,单个进程中的所有线程都放在相同的PID下,这将不适用于Chrome的体系结构。
发布于 2019-09-04 15:38:29
Linux内核确实有POSIX (在/proc/*中可解释)的概念,但它在内核源代码中称它们为线程组ids,并将其内部线程ids称为pids (在/proc/*/task/*中可外露)。
我相信,这是基于Linux最初将线程视为“仅仅是进程”,而这些进程恰好可以共享地址空间和其他一些东西。
您的用户工具可能会传播这个可能混淆了Linux内核术语的内容。
https://stackoverflow.com/questions/57791341
复制相似问题