tss_set
来自 cppreference.cn
在头文件 <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 存储中非空值退出,它将被 thrd_exit 重试最多 TSS_DTOR_ITERATIONS 次,之后存储将丢失。
[编辑] 示例
本节不完整 原因:改进,或许寻找 POSIX 示例以获取灵感 |
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
[编辑] 参考
- C17 标准 (ISO/IEC 9899:2018)
- 7.26.6.4 tss_set 函数 (p: 282-283)
- C11 标准 (ISO/IEC 9899:2011)
- 7.26.6.4 tss_set 函数 (p: 387)
[编辑] 另请参阅
(C11) |
从线程局部存储读取 (函数) |