线程私有数据的原理主要是用公共的键(key)关联不同线程的私有数据。

    今天总结一下线程私有数据的编程的大致过程。下面

#include<pthread.h>

//1.定义全局静态变量key
static pthread_key_t key;
//2. 定义变量once,初始化PTHREAD_ONCE_INIT
static pthread_once_t once = PTHREAD_ONCE_INIT;
//3. 定义析构函数
static void destructor(void *value)
{
	//析构函数用于处理线程退出时的清理操作
}

//4. 
static void init_routine()
{
	pthread_key_create(&key, destructor);
}

void *thr_fun(void *arg)
{
	//5. 定义私有数据
	char test[4096];
	//6. 定义键
	pthread_once(&once, init_routine);
	//7. 测试是否私有数据是否有分配内存
	if ( pthread_getspecific(key) == NULL)
		test = (cahr*)malloc(sizeof(4096));
	//8. 绑定键和TSD
	pthread_setspecific(key, test);
}
int main()
{
	pthread_t tid;
	pthread_create(&tid, NULL, thr_fun, NULL);
        pthread_join(tid, NULL);
}