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_key_setspecific和pthread_key_getspecific 用法

#include pthread.h> void *pthread_getspecific(pthread_key_t key); int pthread_setspecific(pthrea...

线程数据共享:pthread_getspecific和pthread_setspecific

pthread_getpecific和pthread_setspecific提供了在同一个线程中不同函数间共享数据即线程存储的一种方法。具体用法为: 创建一个类型为 pthread_key_t 类型的...

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...

pthread_cond_wait()的使用方法

http://weihe6666.iteye.com/blog/1170141 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;...

pthread_cleanup_push/pop函数使用方法

一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。 线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他...

pthread_cancel 使用方法2

#include #include #define         FAILURE         0#define  ...

pthread_cancel 使用方法1

#include #include   #define  FAILURE  0 #define  SUCCESS  1 #define  UNS32  unsigned int #de...

TSD中的几个函数,pthread_key_create pthread_getspecific

在多线程程序中,经常要用全局变量来实现多个函数间的数据共享。由于数据空间是共享的,因此全局变量也为所有进程共有。但有时应用程序设计中必要提供线程私有的全局变量,这个变量仅在线程中有效,但却可以跨过多个...

pthread_cond_signal()和pthread_cond_wait()的典型使用方法

pthread_cond_signal()和pthread_cond_wait()的典型使用方法 pthread_mutex_t mtx; pthread_cond_t cond; 线程A中通知...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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