Spec-Zone.ru › C

tss_create

Определено в заголовке <threads.h>
int tss_create( tss_t* tss_key, tss_dtor_t destructor );
(с C11)

Создаёт новый ключ хранилища данных, специфичных для потока, и сохраняет его в объекте, на который указывает tss_key. Хотя одно и то же значение ключа может использоваться различными потоками, значения, привязанные к ключу tss_set, сохраняются для каждого потока и существуют на протяжении всего жизненного цикла вызывающего потока.

Значение NULL ассоциируется с вновь созданным ключом во всех существующих потоках, а при создании потока значения, связанные со всеми ключами TSS, инициализируются значением NULL.

Если destructor не является нулевым указателем, то также ассоциируется деструктор, который вызывается при освобождении хранилища thrd_exit (но не tss_delete и не при завершении программы exit).

Вызов tss_create изнутри деструктора хранилища данных, специфичных для потока, приводит к неопределённому поведению.

Параметры

tss_key - указатель на место в памяти для хранения нового ключа хранилища данных, специфичных для потока
destructor - указатель на функцию, которая вызывается при завершении потока

Примечания

Аналогом этой функции в POSIX является pthread_key_create.

Возвращаемое значение

thrd_success в случае успеха, thrd_error в противном случае.

Пример

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.1 Функция tss_create (с. 281-282)
  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.26.6.1 Функция tss_create (с. 386)

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

Spec-Zone.ru

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