首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Linux中的NPTL线程仍然对每个线程都有唯一的PID呢?

为什么Linux中的NPTL线程仍然对每个线程都有唯一的PID呢?
EN

Stack Overflow用户
提问于 2019-09-04 15:14:08
回答 4查看 294关注 0票数 3

我正在阅读线程人,并看到以下内容:

对于NPTL,进程中的所有线程都放在同一个线程组中;线程组的所有成员共享相同的PID。

我当前的架构运行在NPTL 2.17上,当我运行显示线程的htop时,我看到所有PID都是唯一的。但是为什么呢?我希望他们中的一些人(例如铬)彼此分享相同的PID?

EN

回答 4

Stack Overflow用户

发布于 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。

票数 2
EN

Stack Overflow用户

发布于 2019-09-04 15:23:45

谷歌的铬文献 (在这些概念上可能与Chrome类似)指出,它们使用的是“多进程架构”。您从p线程的手册页中引用的话说,单个进程中的所有线程都放在相同的PID下,这将不适用于Chrome的体系结构。

票数 1
EN

Stack Overflow用户

发布于 2019-09-04 15:38:29

Linux内核确实有POSIX (在/proc/*中可解释)的概念,但它在内核源代码中称它们为线程组ids,并将其内部线程ids称为pids (在/proc/*/task/*中可外露)。

我相信,这是基于Linux最初将线程视为“仅仅是进程”,而这些进程恰好可以共享地址空间和其他一些东西。

您的用户工具可能会传播这个可能混淆了Linux内核术语的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57791341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档