PID和TID有什么区别?
标准答案是 PID 用于进程,而 TID 用于线程。然而,我发现有些命令可以互换使用它们。例如,htop
有一个 PID 列,其中显示同一进程的线程的 PID(具有不同的值)。那么PID什么时候代表线程或进程呢?
这很复杂:pid是进程标识符;tid是线程标识符。
但事实上,内核并没有对它们进行真正的区分:线程就像进程一样,但它们与同一进程的其他实例共享一些东西(内存、fds...)group.
So, a tid实际上是内核(线程)中可调度对象的标识符,而pid是共享内存和fds(进程)的一组可调度对象的标识符。
但为了让事情变得更有趣,当一个进程只有一个线程时(最初的情况,在过去的好时光里是唯一的一个)pid和tid总是一样的。所以任何与 a 一起使用的函数tid将自动与pid.
值得注意的是,许多函数/系统调用/命令行实用程序都记录为可以使用pid实际使用tids。但如果效果是整个过程范围内的,您将根本不会注意到差异。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)