tss_create
|
Défini dans l'en-tête
<threads.h>
|
||
|
int
tss_create
(
tss_t
*
tss_key,
tss_dtor_t
destructor
)
;
|
(depuis C11) | |
Crée une nouvelle clé de stockage spécifique au thread et la stocke dans l'objet pointé par
tss_key
. Bien que la même valeur de clé puisse être utilisée par différents threads, les valeurs associées à la clé par
tss_set
sont maintenues sur une base par thread et persistent pour la durée de vie du thread appelant.
La valeur NULL est associée à la nouvelle clé dans tous les threads existants, et lors de la création d'un thread, les valeurs associées à toutes les clés TSS sont initialisées à NULL .
Si
destructor
n'est pas un pointeur nul, alors associe également le destructeur qui est appelé lorsque le stockage est libéré par
thrd_exit
(mais pas par
tss_delete
et pas à la fin du programme par
exit
).
Un appel à
tss_create
depuis un destructeur de stockage spécifique au thread entraîne un comportement indéfini.
Table des matières |
Paramètres
| tss_key | - | pointeur vers l'emplacement mémoire pour stocker la nouvelle clé de stockage spécifique au thread |
| destructor | - | pointeur vers une fonction à appeler à la fin du thread |
Notes
L'équivalent POSIX de cette fonction est
pthread_key_create
.
Valeur de retour
thrd_success si réussi, thrd_error sinon.
Exemple
|
Cette section est incomplète
Raison : améliorer, peut-être chercher des exemples POSIX pour inspiration |
int thread_func(void *arg) { tss_t key; if (thrd_success == tss_create(&key, free)) { tss_set(key, malloc(4)); // stocke un pointeur dans TSS // ... } } // appelle free() pour le pointeur stocké dans TSS
Références
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.26.6.1 La fonction tss_create (p : 281-282)
- Norme C11 (ISO/IEC 9899:2011) :
-
- 7.26.6.1 La fonction tss_create (p: 386)