PID和TID有什么区别?
标准答案是PID用于进程,而TID用于线程.但是,我已经看到一些命令可以互换使用它们.例如,htop有一个PID列,其中显示了相同进程的线程的PID(具有不同的值).那么PID何时表示线程或进程?
rod*_*igo 87
它很复杂:pid是进程标识符; tid是线程标识符.
但实际上,内核并没有真正区分它们:线程就像进程一样,但它们与同一组的其他实例共享一些内容(内存,fds ...).
因此,tid实际上是内核(线程)中可调度对象的标识符,而pid是共享内存和fds(进程)的可调度对象组的标识符.
但是为了使事情变得更有趣,当一个进程只有一个线程(初始情况和旧时代唯一的一个)时,pid和tid总是相同的.因此,任何与tid一起使用的函数都将自动使用pid.
值得注意的是,许多记录使用pid的函数/系统调用/命令行实用程序实际上使用了tid.但如果效果是整个过程,你根本就不会注意到差异.
实际上,Linux 进程中的每个线程都是轻量级进程(LWP)。因此,人们可能将线程称为进程……但肯定是有区别的。进程中的每个线程都有不同的线程ID(TID)并共享相同的进程ID(PID)。
如果您正在使用 pthread 库函数,那么这些函数不会使用这些 TID,因为这些是内核/操作系统级别的线程 ID。