在linux系统中,
每个进程有一个pid(进程ID),获取函数:getpid()
每个线程有一个tid(线程ID),获取函数:pthread_self()
每个线程有一个pid(不知道叫什么),获取函数:syscall(SYS_gettid)
程序举例:
void *hello(void *arg)
{
printf("%ld\n", syscall(SYS_gettid));
printf("%d\n", getpid());
printf("%ld\n", pthread_self());
}
int main()
{
printf("%ld\n", syscall(SYS_gettid));
printf("%d\n", getpid());
printf("%ld\n", pthread_self());
printf("------------------------------\n");
pthread_t pthread_id;
pthread_create(&pthread_id, NULL, hello, NULL);
sleep(2);
printf("------------------------------\n");
printf("%ld\n", syscall(SYS_gettid));
printf("%d\n", getpid());
printf("%ld\n", pthread_self());
return 0;
}
结果显示
注意:主线程的pid和所在进程的pid一致,可以通过这个来判断是否是主线程