Sha*_*awn 11 c++ linux pthreads
在RH Linux中,每个pthread都映射到pid,可以在htop等工具中监视它.但我怎么能得到线程的pid?getpid()只返回主线程的pid.
Duc*_*uck 25
有两个线程值混淆. pthread_self()将返回POSIX线程id; gettid()将返回OS线程ID.后者是特定于Linux的,并不保证是可移植的,但可能是你真正想要的.
编辑正如PlasmaHH所说,gettid()被称为通过syscall().从syscall()手册页:
   #define _GNU_SOURCE
   #include <unistd.h>
   #include <sys/syscall.h>
   #include <sys/types.h>
   int
   main(int argc, char *argv[])
   {
       pid_t tid;
       tid = syscall(SYS_gettid);
   }
可以调用以返回调用线程的ID.
PID也是进程Id,线程有线程Id而不是PID.在同一进程中运行的所有线程将具有相同的PID.