Spec-Zone.ru › C

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)

См. также

tss_get
(C11)
считывает из хранилища потокоспецифических данных
(функция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/thread/tss_set

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API