Namespaces
Variants

tss_create

From cppreference.net
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

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)