Namespaces
Variants

tss_create

From cppreference.net
Definido en el encabezado <threads.h>
int tss_create ( tss_t * tss_key, tss_dtor_t destructor ) ;
(desde C11)

Crea una nueva clave de almacenamiento específica del hilo y la almacena en el objeto apuntado por tss_key . Aunque el mismo valor de clave puede ser utilizado por diferentes hilos, los valores vinculados a la clave mediante tss_set se mantienen por cada hilo individualmente y persisten durante la vida del hilo que realiza la llamada.

El valor NULL está asociado con la nueva clave creada en todos los hilos existentes, y al crear un hilo, los valores asociados con todas las claves TSS se inicializan a NULL .

Si destructor no es un puntero nulo, entonces también asocia el destructor que se llama cuando el almacenamiento es liberado por thrd_exit (pero no por tss_delete y no en la terminación del programa por exit ).

Una llamada a tss_create desde dentro de un destructor de almacenamiento específico del hilo resulta en comportamiento indefinido.

Contenidos

Parámetros

tss_key - puntero a la ubicación de memoria para almacenar la nueva clave de almacenamiento específica del hilo
destructor - puntero a una función a llamar al finalizar el hilo

Notas

El equivalente POSIX de esta función es pthread_key_create .

Valor de retorno

thrd_success si es exitoso, thrd_error en caso contrario.

Ejemplo

int thread_func(void *arg) {
    tss_t key;
    if (thrd_success == tss_create(&key, free)) {
        tss_set(key, malloc(4)); // almacena un puntero en TSS
        // ...
    }
} // llama a free() para el puntero almacenado en TSS

Referencias

  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.26.6.1 La función tss_create (p: 281-282)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.26.6.1 La función tss_create (p: 386)