tss_create
|
定义于头文件
<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 表示出现错误。
示例
|
本节内容尚不完整
原因:需要改进,建议参考POSIX示例获取灵感 |
int thread_func(void *arg) { tss_t key; if (thrd_success == tss_create(&key, free)) { tss_set(key, malloc(4)); // 在TSS中存储指针 // ... } } // 为TSS中存储的指针调用free()
参考文献
- C17 标准 (ISO/IEC 9899:2018):
-
- 7.26.6.1 tss_create 函数 (页: 281-282)
- C11 标准 (ISO/IEC 9899:2011):
-
- 7.26.6.1 tss_create 函数 (页: 386)