zoukankan      html  css  js  c++  java
  • pthread_getspecific和pthread_setspecific使用

    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 ",*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 ",*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

     

     

    参考资料:http://hi.baidu.com/livetodaywell/blog/item/7d1b7811fbf58af6c2ce79e6.html

  • 相关阅读:
    【iOS
    【iOS】Swift ESTabBarController的使用
    【iOS
    【iOS】图表实现-Charts(二)
    【iOS】图表实现-Charts(一)
    【iOS】图表实现-AAChartKit
    【iOS】图表实现-总述
    【iOS
    【iOS
    整理下开发中常用的第三方库
  • 原文地址:https://www.cnblogs.com/zhoug2020/p/3951352.html
Copyright © 2011-2022 走看看