tss_delete
|
Определено в заголовочном файле
<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 в этом потоке нулевым (деструкторы вызываются только для ненулевых значений).
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
-
- 7.26.6.2 Функция tss_delete (стр: 282)
- Стандарт C11 (ISO/IEC 9899:2011):
-
- 7.26.6.2 Функция tss_delete (стр: 386)