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_set
可以在 TSS 析构函数中调用。如果析构函数在 TSS 存储中以非 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) |
从线程特定存储读取 (函数) |