您的位置:首页 > 编程语言 > PHP开发

pthread_getpecific和pthread_setspecific

2015-07-01 16:47 471 查看
pthread_getpecific和pthread_setspecific实现同一个线程中不同函数间共享数据的一种很好的方式。



#more test.c

/*

* =====================================================================================

* Filename: thead.c

* Description: getspecific

* Created: 05/10/2011 12:09:43 AM

* =====================================================================================

*/

#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: