tss_set
tss_set
在头文件 | | |
---|---|---|
int tss_set(tss_t tss_id,void * val); | | (自C11以来) |
将当前线程的tss_id标识的线程专有存储的值设置为val。 不同的线程可以为同一个键设置不同的值。
析构函数如果可用,则不会被调用。
参数
tss_id | - | 线程特定的存储密钥,从tss_create获取,不被tss_delete删除 |
---|---|---|
val | - | 设置线程专有存储的值 |
返回值
如果成功则返回thrd_success,否则返回thrd_error。
注意
这个函数的POSIX等价物是pthread_setspecific。
通常,TSS用于存储指向已被保留供调用线程使用的动态分配内存块的指针。
可以在TSS析构函数中调用tss_set。 如果析构函数在TSS存储中以非NULL值退出,它将被thrd_exit重试直到TSS_DTOR_ITERATIONS次,之后存储将会丢失。
例
int thread_func(void *arg) {
tss_t key;
if (thrd_success == tss_create(&key, free)) {
tss_set(key, malloc(4) // stores a pointer on TSS
// ...
}
} // calls free() for the pointer stored on TSS
参考
- C11标准(ISO / IEC 9899:2011):
扩展内容
tss_get(C11) | 从线程专有存储器读取(功能) |
---|