tss_delete
|
定义于头文件
<threads.h>
|
||
|
void
tss_delete
(
tss_t
tss_id
)
;
|
(C11 起) | |
销毁由
tss_id
标识的线程特定存储。
如果通过
tss_create
注册了析构函数,该函数不会被调用(析构函数仅在线程退出时通过
thrd_exit
或从线程函数返回时调用)。程序员有责任确保所有知晓
tss_id
的线程在调用
tss_delete
之前完成所有必要的清理工作。
如果当另一个线程正在执行
tss_id
的析构函数时调用
tss_delete
,是否改变关联析构函数的调用次数是未指定的。
如果在线程正在执行析构函数时调用
tss_delete
,则与该
tss_id
关联的析构函数不会在此线程上再次执行。
目录 |
参数
| tss_id | - | 先前由 tss_create 返回且尚未被 tss_delete 删除的线程特定存储键 |
返回值
(无)
注释
该函数的POSIX等效函数是
pthread_key_delete
。
tss_delete
从不调用析构函数的原因是:析构函数(在线程退出时调用)通常旨在由最初设置值(通过
tss_set
)的同一线程执行,该析构函数将处理该值,甚至可能依赖于该线程所见的该线程特定数据或其他线程特定数据的值。执行
tss_delete
的线程无法访问其他线程的 TSS。即使可以为每个线程调用与
tss_id
关联的自身值的析构函数,
tss_delete
也必须与每个线程同步,哪怕只是为了检查该线程中此 TSS 的值是否为空(仅对非空值调用析构函数)。
示例
|
本节内容不完整
原因:缺少示例 |
参考文献
- C17 标准 (ISO/IEC 9899:2018):
-
- 7.26.6.2 tss_delete 函数 (页: 282)
- C11 标准 (ISO/IEC 9899:2011):
-
- 7.26.6.2 tss_delete 函数 (p: 386)