UNIX(编程-线程处理):02---线程标识符及其比较获取(pthread_equal、pthread_self)

一、线程标识符(pthread_t

  • 进程ID在整个系统中是唯一的,但线程ID不同,线程ID只有在它所属的进程上下文中才有意义
  • 线程ID的类型是: pthread_t,是一个结构体数据类型,所以可移植操作系统实现不能把它作为整数处理

各个系统如何表示线程ID:

  • Linux 3.2.0使用无符号长整型表示pthread_t数据类型
  • Solaris 10把pthread_t数据类型表示为无符号整型(不是长整型)
  • FreeBSD 8.0和Mac OS X 10.6.8用一个指向pthread结构的指针来表示pthread_t数据类型(注意:事实上,Mac OS X与FreeBSD不用,Mac OS X主线程ID和使用pthread_create创建的新线程的ID不在相同的地址范围内)

二、线程的ID的比较

  • pthread_是一个结构体数据类型,所以可移植操作系统实现不能把它作为整数处理,因此只能用函数来比较线程的ID
#include <pthread.h>
int pthread_equal(pthread_t tid1, pthread_t tid2);

// 若相等,返回非0数值;否则,返回0

三、线程ID的获取(pthread_self)

  • 使用 pthread_t数据类型的 后果是不能用 一种可移植的方式打印该数据类型的值。在程序调试中打印线程ID是非常有用的,而在其他情况下通常不需要打印线程ID。最坏的情况是有可能出现不可移植的调试代码,当然这也算不上是很大的局限性
  • 线程可以通过pthread_self或得自身的线程ID
#include <pthread.h>
pthread_t pthread_self(void); 

// 返回调用线程的线程ID

四、其他

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/89293330
今日推荐