tss_set
Определено в заголовке <threads.h> | ||
|---|---|---|
int tss_set( tss_t tss_id, void *val ); | (с C11) |
Устанавливает значение хранилища потокоспецифических данных, идентифицируемого tss_id, для текущего потока на val. Разные потоки могут устанавливать разные значения для одного и того же ключа.
Деструктор, если он доступен, не вызывается.
Параметры
| tss_id | - | ключ хранилища потокоспецифических данных, полученный из tss_create и не удалённый tss_delete |
| val | - | значение, на которое устанавливается хранилище потокоспецифических данных |
Возвращаемое значение
thrd_success при успехе, thrd_error в противном случае.
Примечания
Аналогом этой функции в POSIX является pthread_setspecific.
Обычно хранилище потокоспецифических данных используется для хранения указателей на блоки динамически выделенной памяти, зарезервированной для использования вызывающим потоком.
tss_set может быть вызван в деструкторе хранилища потокоспецифических данных. Если деструктор завершается с ненулевым значением в хранилище потокоспецифических данных, оно будет повторно выполнено thrd_exit до TSS_DTOR_ITERATIONS раз, после чего хранилище будет потеряно.
Пример
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Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.26.6.4 Функция tss_set (с. 282-283)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.26.6.4 Функция tss_set (с. 387)
См. также
|
(C11) | считывает из хранилища потокоспецифических данных (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/thread/tss_set