Linux多线程学习(四)pthread_self

本文详细介绍了pthread_self()函数的功能、参数类型以及如何通过测试代码验证其正确性。通过实例展示了如何在多线程环境中获取当前线程的ID。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原型
#include <pthread.h>
pthread_t pthread_self(void);


说明
获取本进程自身的 ID。进程 ID 类型是 pthread_t ,这个类型一般为long long 型,8个字节。

测试代码
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void  * thread_one ()
{
    printf  ( "thread_one pid is %lld \n " ,   getpid ());
     printf  ( "thread_one tid is %lld \n " ,   pthread_self ());
}

void   * thread_two ()
{
     printf  ( "thread_two pid is %lld \n " ,   getpid ());
     printf  ( "thread_two tid is %lld \n " ,   pthread_self ());
}

int   main  ( int   argc ,   char   ** argv )
{
     pid_t   pid ;
     pthread_t   tid_one ,   tid_two ;
    
     if  (( pid   =   fork ())  ==   - 1 {
         perror  ( "fork" );
         exit  ( EXIT_FAILURE );
     }   else   if  ( pid   ==   0 {
         pthread_create  ( & tid_one ,   NULL ,  ( void   * ) thread_one ,   NULL );
         pthread_join  ( tid_one ,   NULL );
     }   else   {
         pthread_create  ( & tid_two ,   NULL ,  ( void   * ) thread_two ,   NULL );
         pthread_join  ( tid_two ,   NULL );
     }

     wait  ( NULL );
    return 0;
}

编译 gcc -o pthread_self -lpthread pthread_self.c
运行结果:thread_one pid is 17480
thread_one tid is -1208779872
thread_two pid is 17479
thread_two tid is -1208779872

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值