多线程编程(二)——线程标识

    进程ID在整个系统中是唯一的,但线程ID只在它所属的进程环境中有效。
   
    进程ID,用pid_t数据类型表示,是一个非负的整数。线程ID则用pthread_t数据类型表示,实现的时候可以用一个结构来代表pthread_t数据类型,所以可移植的操作系统实现不能把它作为整数处理。要使用函数来对两个线程ID进行比较。
    1.线程ID 的比较
#include <pthread.h>

       int pthread_equal(pthread_t t1, pthread_t t2);
返回值:若相等则返回 非0值, 否则返回0.参见 http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread.h.html
 
  2 .线程ID的获取
#include <pthread.h>

       pthread_t pthread_self(void);
返回值:调用线程的线程ID

【应用场景】: 当线程需要识别以线程ID作为标识的数据结构时,pthread_self函数可以和pthread_equal函数一起使用。一个例子,主线程可能把工作任务放在一个队列中,用线程ID来控制每个工作线程处理哪些作业。即每个线程不是任意地处理从队列顶端取出的作业,而是由主线程控制作业的分配,主线程在每个待处理作业的结构中放置处理该作业的线程ID,每个工作线程只能移出标有自己线程ID的作业。

你可能感兴趣的:(多线程编程,线程标识)