C参考手册
线程支持 | Thread support
tss_set
在头文件<threads.h>中定义 |
|
|
---|---|---|
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):
- 7.26.6.4 tss_set 函数(p:387)
扩展内容
tss_get(C11) |
从线程专有存储器读取(功能) |
---|