Namespaces
Variants

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 次,此后该存储将丢失。

示例

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)
从线程特定存储读取数据
(函数)