就像每个进程有一个进程ID一样,每个线程也有一个线程ID。进程ID在整个系统中是唯一的,但线程ID不同,线程ID只在它所属的进程环境中有效。
进程ID,用pid_t数据类型来表示,是一个非负整数。线程ID则用pthread_t数据类型来表示,实现的时候可以用一个结构来代表pthread_t数据类型,所以可移植的操作系统实现不能把它作为整数处理。因此必须使用函数来对两个线程ID进行比较。
#include <pthread.h> int pthread_equal( pthread_t tid1, pthread_t tid2 ); 返回值:若相等则返回非0值,否则返回0
Linux 2.4.22使用无符号长整型表示pthread_t数据类型。Solaris 9把pthread_t数据类型表示为无符号整数。FreeBSD 5.2.1和Mac OS X10.3用一个指向pthread结构的指针来表示pthread_t数据类型。
用结果表示pthread_t数据类型的后果是不能用一种可移植的方式打印该数据类型的值。
线程可以通过调用pthread_self函数获得自身的线程ID。
#include <pthread.h> pthread_t pthread_self(void); 返回值:调用线程的线程ID
本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。