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 析构器中调用 tss_set
。若 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)); // 在 TSS 上存储指针 // ... } } // 对 TSS 上存储的指针调用 free()
引用
- C17 标准(ISO/IEC 9899:2018):
- 7.26.6.4 The tss_set function (第 282-283 页)
- C11 标准(ISO/IEC 9899:2011):
- 7.26.6.4 The tss_set function (第 387 页)
参阅
(C11) |
从线程特定存储读取 (函数) |