pthread_getspecific()和pthread_setspecific()的使用方法

原创 2013年12月02日 18:28:35

pthread_getpecific和pthread_setspecific实现同一个线程中不同函数间共享数据的一种很好的方式。

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
pthread_key_t key;
void func1()
{

	int *tmp = (int*)pthread_getspecific(key);
	printf("%d is fun is %s\r\n",*tmp,__func__);
}
void *tthread_fun(void* args)
{

	pthread_setspecific(key,args);
	int *tmp = (int*)pthread_getspecific(key);
	printf("%d is in zhu %s\r\n",*(int*)args,__func__);
	*tmp+=1;
	func1();


	return (void*)0;		
}
void *thread_fun(void *args)
{
	pthread_setspecific(key,args);
	int *tmp = (int*)pthread_getspecific(key);//获得线程的私有空间
	printf("%d is runing in %s\n",*tmp,__func__);
	*tmp = (*tmp)*100;//修改私有变量的值
	func1();
	return (void*)0;
}

int main()
{

	pthread_t pa, pb;
	pthread_key_create(&key,NULL);

	pthread_t pid[3];
	int a[3]={100,200,300};
	int i=0;
	for(i=0;i<3;i++)
	{

		pthread_create(&pid[i],NULL,tthread_fun,&a[i]);
		pthread_join(pid[i],NULL);

	}
	return 0;
}


pthread_getspecific()--读线程私有数据|pthread_setspecific()--写线程私有数据

原型: #include void *pthread_getspecific(pthread_key_t key); int pthread_setspecific(pthread...
  • u011676589
  • u011676589
  • 2013年09月09日 22:07
  • 4103

pthread_setspecific函数与pthread_getspecific函数

函数原型:int pthread_setspecific(pthread_key_t key, const void *value); 功能:使用pthread_setspecific可以为指定线程特...
  • mengxingyuanlove
  • mengxingyuanlove
  • 2016年03月07日 16:48
  • 1994

线程数据共享:pthread_getspecific和pthread_setspecific

pthread_getpecific和pthread_setspecific提供了在同一个线程中不同函数间共享数据即线程存储的一种方法。具体用法为: 创建一个类型为 pthread_key_t 类型的...
  • arag2009
  • arag2009
  • 2013年12月09日 14:59
  • 1092

pthread_setspecific,pthread_getspecific

可以参考freediameter里面用法。 set是传入
  • an_zhenwei
  • an_zhenwei
  • 2014年07月11日 10:06
  • 442

pthread_getspecific和pthread_setspecific使用

原文地址:http://blog.csdn.net/eaglesoring/article/details/8627608 pthread_getpecific和pthread_setspeci...
  • cuixingbing
  • cuixingbing
  • 2013年10月29日 08:48
  • 465

线程局部存储-pthread_getspecific和pthread_setspecific使用

在Linux系统中使用C/C++进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这对程序的性能带来了很大的影响,当然对于那些系统原生支持原...
  • vevenlcf
  • vevenlcf
  • 2017年09月07日 16:16
  • 190

pthread_once,pthread_key_create,pthread_setspecific,pthread_getspecific

pthread_once_t once_control = PTHREAD_ONCE_INIT; int pthread_once(pthread_once_t *once_control, voi...
  • yockie
  • yockie
  • 2016年06月05日 18:38
  • 454

pthread_once、pthread_key_create和pthread_getspecific和pthread_setspecific

NativeMessageQueue::NativeMessageQueue() {     mLooper = Looper::getForThread();     if (mLooper =...
  • tmpantian
  • tmpantian
  • 2013年05月28日 20:35
  • 1535

每天进步一点点——Linux中的线程局部存储(一)

在Linux系统中使用C/C++进行多线程编程时有些数据无需使用锁即可做到快速高效,本文从线程局部存储出发讨论如何高效的实现无锁编程。...
  • cywosp
  • cywosp
  • 2014年05月21日 14:25
  • 20171

pthread_getpecific和pthread_setspecific

pthread_getpecific和pthread_setspecific实现同一个线程中不同函数间共享数据的一种很好的方式。   #more test.c /*  ...
  • abcd1f2
  • abcd1f2
  • 2015年07月01日 16:47
  • 420
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pthread_getspecific()和pthread_setspecific()的使用方法
举报原因:
原因补充:

(最多只允许输入30个字)