首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PID与TID的区别

PID与TID的区别
EN

Stack Overflow用户
提问于 2010-12-23 17:15:42
回答 4查看 62.3K关注 0票数 69

PID和TID有什么区别?

标准答案是PID用于进程,而TID用于线程。但是,我已经看到一些命令可以互换地使用它们。例如,htop有一个PID列,其中显示了同一进程的线程的PID(具有不同的值)。那么,PID何时表示线程或进程呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-09 19:43:59

它很复杂: pid是进程标识符;tid是线程标识符。

但碰巧的是,内核并没有真正区分它们:线程就像进程一样,但它们共享一些东西(内存、磁盘...)与同一组的其他实例。

因此,tid实际上是内核(线程)中可调度对象的标识符,而pid是共享内存和fds (进程)的可调度对象组的标识符。

但是让事情更有趣的是,当一个进程只有一个线程时(最初的情况,在过去的好时光中是唯一的),pid和tid总是相同的。因此,任何使用tid的函数都将自动使用pid。

值得注意的是,许多记录为使用pid的函数/系统调用/命令行实用程序实际上使用了tid。但是,如果影响是全过程的,您将根本不会注意到差异。

票数 105
EN

Stack Overflow用户

发布于 2012-01-09 19:13:59

实际上,Linux进程中的每个线程都是轻量级进程(LWP)。因此,人们可能会将线程称为进程...但这肯定是有区别的。进程中的每个线程具有不同的线程ID (TID),并共享相同的进程ID (PID)。

如果您正在使用pthread库函数,那么这些函数就不会使用这些TID,因为它们是内核/操作系统级别的线程ID。

票数 4
EN

Stack Overflow用户

发布于 2016-05-07 21:18:55

根据man gettid的说法,只是为了补充其他答案

此调用返回的线程ID与POSIX线程ID不同(即,pthread_self(3)返回的不透明值)。

因此,TID有两种不同的含义!

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

https://stackoverflow.com/questions/4517301

复制
相关文章

相似问题

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