由于本人才疏学浅,本文难免存在遗漏之处,欢迎大家留言指正,本人将感激不尽。 强调内容
一、线程号的获取
首先,我们要知道一个进程可能包含多个线程,每个线程都有自己的id。获取线程id存在下面两种方法:
1、pthread_t pthread_self(void):
其中返回值类型为pthread_t,类型的定义如下所示:
typedef unsigned long int pthread_t
注意,pthread_self获取的线程id只是在该线程所属的进程内有用,进程内部可以通过pthread_self获取的id来区分线程,并且在不同进程内的线程可能存在相同的由pthread_self所获取的id,系统无法用此id来区分线程。
2、pid_t gettid(void):
返回类型为pid_t,实际上pid_t为int类型。
在Linux中进程id类型也为pid_t,所以我们可以看到,在linux 中线程其实是通过进程来实现的。
通过gettid()获取的id在整个系统内都是可见的,每个线程都具有独一无二的由gettid获取的id。
gettid用法举例