tss_set

来自cppreference.com
< 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_set可以在TSS析构函数中调用。若析构函数以TSS存储中的非NULL值退出,则它会为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()

[编辑] 参考

  • C11 standard (ISO/IEC 9899:2011):
  • 7.26.6.4 The tss_set function (p: 387)

[编辑] 参阅

从线程指定存储读取
(函数) [edit]