看有的也是用获取线程id类型使用的是pid_t
我们发现,调用syscall获取的id与ps命令获取的相同。
pthread_self 是posix描述的线程ID(并非内核真正的线程id),相对于进程中各个线程之间的标识号,对于这个进程内是唯一的,而不同进程中,每个线程的 pthread_self() 可能返回是一样的。
所以,获取线程真正的id方法:
#include <sys/syscall.h>
pthread_t childtid = syscall(__NR_gettid);
进一步做测试,发先,pthread_create创建的线程号与pthread_self()返回的线程号是一致的。