©
This document uses PHP Chinese website manual Release
在头文件<threads.h>中定义 | ||
---|---|---|
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):
7.26.6.1 tss_create函数(p:386)