首页 > 代码库 > 线程变量
线程变量
pthread_getpecific和pthread_setspecific实现同一个线程中不同函数间共享数据的一种很好的方式。
#include<stdio.h>#include<pthread.h>#include<string.h>pthread_key_t p_key;void func1(){ int *tmp = (int*)pthread_getspecific(p_key);//同一线程内的各个函数间共享数据。 printf("%d is runing in %s\n",*tmp,__func__);}void *thread_func(void *args){ pthread_setspecific(p_key,args); int *tmp = (int*)pthread_getspecific(p_key);//获得线程的私有空间 printf("%d is runing in %s\n",*tmp,__func__); *tmp = (*tmp)*100;//修改私有变量的值 func1(); return (void*)0;}int main(){ pthread_t pa, pb; int a=1; int b=2; pthread_key_create(&p_key,NULL); pthread_create(&pa, NULL,thread_func,&a); pthread_create(&pb, NULL,thread_func,&b); pthread_join(pa, NULL); pthread_join(pb, NULL); return 0;}
#gcc -lpthread test.c -o test
# ./test
2 is runing in thread_func
1 is runing in thread_func
100 is runing in func1
200 is runing in func1
线程变量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。