码迷,mamicode.com
首页 > 编程语言 > 详细

线程变量

时间:2014-12-11 10:03:23      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   sp   数据   div   log   bs   ad   

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

线程变量

标签:blog   io   ar   sp   数据   div   log   bs   ad   

原文地址:http://www.cnblogs.com/kangbry/p/4156827.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!