tss_set
|
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
|
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.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) |