首页 > 代码库 > pthread_self()究竟根据什么来得到线程的标识符????
pthread_self()究竟根据什么来得到线程的标识符????
#include<stdlib.h>#include<pthread.h>#include<stdio.h>#include<sched.h>#include<errno.h>void*consumer(void*p){ sleep(10);//这句代码,主要是为了测试用的,说白了就是等到所有线程创建完毕后,在输出线程标识符 printf("(%lu) %lu\n",pthread_self(),(*(unsigned long int*)p));//注意这个格式 pthread_exit(NULL); }int main(int argc,char*argv[]){printf("(%lu)\n",pthread_self()); pthread_t t1;int i=1; int ret ; do { ret=pthread_create(&t1,NULL,consumer,(void *)&t1); if(ret!=0) { printf("create failed,%d\n",ret); exit(1); } i++; } while(i<=8); sleep(20); return 0 ;}/*[root@linux Desktop]# gcc a.c -lpthread[root@linux Desktop]# ./a.out(3079116480)(3047644016) 3005684592(3037154160) 3005684592(3058133872) 3005684592(3026664304) 3005684592(3016174448) 3005684592(3005684592) 3005684592 //注意看这两个值是一样的!(3068623728) 3005684592(3079113584) 3005684592[root@linux Desktop]# */
根据这个输出结果让使我很疑惑,pthread_self()函数究竟根据什么得到了线程标识符!
pthread_self()究竟根据什么来得到线程的标识符????
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。