Namespaces
Variants

tss_set

From cppreference.net
Défini dans l'en-tête <threads.h>
int tss_set ( tss_t tss_id, void * val ) ;
(depuis C11)

Définit la valeur du stockage spécifique au thread identifié par tss_id pour le thread actuel à val . Différents threads peuvent définir différentes valeurs pour la même clé.

Le destructeur, s'il est disponible, n'est pas invoqué.

Table des matières

Paramètres

tss_id - clé de stockage spécifique au thread, obtenue via tss_create et non supprimée par tss_delete
val - valeur à définir pour le stockage spécifique au thread

Valeur de retour

thrd_success si réussi, thrd_error sinon.

Notes

L'équivalent POSIX de cette fonction est pthread_setspecific .

Typiquement, le TSS est utilisé pour stocker des pointeurs vers des blocs de mémoire alloués dynamiquement qui ont été réservés pour une utilisation par le thread appelant.

tss_set peut être appelé dans le destructeur TSS. Si le destructeur se termine avec une valeur non nulle dans le stockage TSS, il sera réessayé par thrd_exit jusqu'à TSS_DTOR_ITERATIONS fois, après quoi le stockage sera perdu.

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.4 La fonction tss_set (p : 282-283)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.26.6.4 La fonction tss_set (p: 387)

Voir aussi

(C11)
lit depuis le stockage spécifique au thread
(fonction)