tss_create
|
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
|
Esta sección está incompleta
Razón: mejorar, quizás buscar ejemplos de POSIX para inspiración |
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)