tss_set

tss_set

在头文件中定义
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次,之后存储将会丢失。

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

参考

  • C11标准(ISO / IEC 9899:2011):

扩展内容

tss_get(C11)从线程专有存储器读取(功能)