tss_set
来自 cppreference.com
定义于头文件 <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_set
可以在线程局部存储析构函数中调用。如果析构函数退出时线程局部存储中的值为非 NULL,则它会被 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) |
从线程局部存储中读取 (函数) |