命名空间
变体
操作

tss_set

来自 cppreference.cn
< c‎ | thread
在头文件 <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 次,之后存储将丢失。

[编辑] 示例

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)

[编辑] 另请参阅

从线程局部存储读取
(函数) [编辑]