tss_create

tss_create

在头文件中定义
int tss_create(tss_t * tss_key,tss_dtor_t析构函数);(自C11以来)

创建新的线程专有存储密钥并将其存储在tss_key指向的对象中。 尽管不同线程可能使用相同的键值,但由tss_set绑定到键的值将以每个线程为基础进行维护,并在调用线程的整个生命周期内保持不变。

值NULL与所有现有线程中新创建的键相关联,创建线程后,与所有TSS键相关的值将初始化为NULL。

如果析构函数不是空指针,那么还会关联由thrd_exit(但不是由tss_delete而不是在程序终止处通过退出)释放存储器时调用的析构函数。

从特定于线程的存储析构函数调用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) // stores a pointer on TSS // ... } } // calls free() for the pointer stored on TSS

参考

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