tss_set
From cppreference.net
|
定义于头文件
<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存储中存有非空值,
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 tss_set 函数 (页: 282-283)
- C11 标准 (ISO/IEC 9899:2011):
-
- 7.26.6.4 tss_set 函数 (p: 387)
参考
|
(C11)
|
从线程特定存储读取数据
(函数) |