tss_create

来自cppreference.com
< c‎ | thread
定义于头文件 <threads.h>
int tss_create( tss_t* tss_key, tss_dtor_t destructor );
(C11 起)

创建一个新的线程指定存储关键,并将其存储于tss_key所指定的对象。尽管同一关键值可以被不同线程使用,由tss_set绑定到关键的值在每个线程基础上维护,并在调用放线程的生命内存留。

在所有既存线程中,值NULL被关联到的新建关键,而在线程创建之时,与所有TSS关键关联的值被初始化为NULL

destructor不是空指针,则关联析构函数,析构函数在存储以thrd_exit释放(但非tss_delete,而且不在程序以exit终止)时被调用。

在线程指定存储的析构函数内调用tss_create导致未定义行为。

目录

[编辑] 参数

tss_key - 指向要存储新的线程指定存储关键的内存位置的指针
destructor - 指向要在线程退出时调用的函数的指针

[编辑] 注意

此函数的POSIX等价版本是pthread_key_create

[编辑] 返回值

若成功则为thrd_success,否则为thrd_error

[编辑] 示例

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.1 The tss_create function (p: 386)