tss_delete

来自cppreference.com
< c‎ | thread
定义于头文件 <threads.h>
void tss_delete( tss_t tss_id );
(C11 起)

销毁tss_id所标识的线程指定存储。

析构器,若为tss_create所注册者,不会被调用(它们只在线程退出时调用,通过thrd_exit或通过线程函数的返回),确保每个具备tss_id的线程在tss_delete调用前进行所有需要的清理是程序员责任。

tss_delete在另一个执行tss_id的析构函数时被调用,则此调用是否更改关联的析构函数调用次数是未指定的。

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的值是否为空(析构函数仅对非空值调用)。

[编辑] 示例

[编辑] 参考

  • C11 standard (ISO/IEC 9899:2011):
  • 7.26.6.2 The tss_delete function (p: 386)