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...
  • fox1987
  • fox1987
  • 2013年10月22日 17:48
  • 580

线程数据共享: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...
  • yockie
  • yockie
  • 2016年06月05日 18:38
  • 412

pthread_cond_wait()的使用方法

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

pthread_join的使用方法

http://blog.sina.com.cn/s/blog_693301190100xou4.html pthread_join使一个线程等待另一个线程结束。 代码中如果没有pthread_...

pthread-win32库编译及使用方法注意事项

“该文引用自 CruiseYoung的:pthread-win32库编译及使用方法注意事项      http://blog.csdn.net/fksec/article/details/41517...

pthread-win32库编译及使用方法注意事项

开篇提示:本文欢迎转载,但必须注明本文出处,例如: “该文引用自 CruiseYoung的: pthread-win32库编译及使用方法注意事项    http://blog.csdn.net/fks...
  • fksec
  • fksec
  • 2014年11月26日 16:46
  • 3922

多线程条件变量pthread_cond_t使用方法

#include #include #include pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;/*初始化互斥锁*/ pthre...

pthread_cleanup_push/pop函数使用方法

一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。 线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pthread_getspecific()和pthread_setspecific()的使用方法
举报原因:
原因补充:

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