线程私有数据
创建私有数据之前得先创建一个键,需要创建与该数据相关联的键
#include<pthread.h>
int pthread_key_create(pthread_key_t *keyp, void (*destructor)(void *));
成功--0,出错--返回错误编号
参数;
keyp -- 存储创建的键,可以被任何线程使用,但每个线程把这个键和不同的线程私有数据地址
进行关联。
destructor-- 析构函数释放资源。
释放键的空间,并不是释放私有数据空间
#include<pthread.h>
int pthread_key_delete(pthread_key_t key);
成功--0,出错--返回错误编号
使某个函数只是被调用一次
#include<pthread.h>
pthread_once_t initflag = PTHREAD_ONCE_INIT;
int pthread_once(pthread_once_t *initflag, void(*initfn)(void));
成功--0,出错--返回错误编号
获得线程私有数据的地址
#include<pthread.h>
void *pthread_getspecific(pthread_key_t key);
返回值:线程私有数据值;若是没有值和该键关联,返回NULL
把键和私有数据关联起来。
#include<pthread.h>
int pthread_setspecific(pthread_key_t key,const void *value);
成功--0,出错--返回错误编号
创建私有数据之前得先创建一个键,需要创建与该数据相关联的键
#include<pthread.h>
int pthread_key_create(pthread_key_t *keyp, void (*destructor)(void *));
成功--0,出错--返回错误编号
参数;
keyp -- 存储创建的键,可以被任何线程使用,但每个线程把这个键和不同的线程私有数据地址
进行关联。
destructor-- 析构函数释放资源。
释放键的空间,并不是释放私有数据空间
#include<pthread.h>
int pthread_key_delete(pthread_key_t key);
成功--0,出错--返回错误编号
使某个函数只是被调用一次
#include<pthread.h>
pthread_once_t initflag = PTHREAD_ONCE_INIT;
int pthread_once(pthread_once_t *initflag, void(*initfn)(void));
成功--0,出错--返回错误编号
获得线程私有数据的地址
#include<pthread.h>
void *pthread_getspecific(pthread_key_t key);
返回值:线程私有数据值;若是没有值和该键关联,返回NULL
把键和私有数据关联起来。
#include<pthread.h>
int pthread_setspecific(pthread_key_t key,const void *value);
成功--0,出错--返回错误编号