linux pthread 多线程,Linux多线程之pthread_self

本文通过一个测试代码展示了在多线程环境中,pthread_self()函数获取线程ID和getpid()获取进程ID的区别。在代码中,主线程创建了两个子线程,每个线程打印其进程ID和线程ID,结果显示每个线程拥有相同的进程ID但不同的线程ID,揭示了进程和线程在标识上的差异。
摘要由CSDN通过智能技术生成

原型 :

#include

pthread_t pthread_self(void);

说明 :

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

测试代码 :

#include

#include

#include

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、付费专栏及课程。

余额充值