6.6.3 获得线程id
如本章前面所提到的,进程和它的地址空间内的线程共享资源。线程自身拥有的资源很少,但是线程id是线程的独特资源中的一种。函数pthread_self( )返回调用线程的线程id。
调用形式
- #include <pthread.h>
-
- pthread_t pthread_self(void);
当一个线程被创建之后,会将线程id返回到调用线程。一旦线程有了自己的id之后,可以将id传递给进程中的其他线程。这个函数返回线程id,且未定义错误。
下面是调用这个函数的实例:
- pthread_t ThreadId;
- ThreadId = pthread_self();
线程调用这个函数,函数将线程id返回并赋给pthread_t类型的变量ThreadId。
线程id还会被返回到pthread_create( )的调用线程。如果成功创建了线程,则线程id保存在pthread_t中。
比较线程id
您可以将线程id按照非透明类型进行处理。线程id可以进行比较,但是使用的不是一般的比较操作符。您可以通过调用pthread_equal( )来比较两个线程的id是否相等。
调用形式
- #include <pthread.h>
-
- int pthread_equal(pthread_t tid1, pthread_t tid2);
如果两个线程id指向相同的线程,则pthread_equal( )返回一个非零值。如果它们指向不同的线程,则返回零。