pthread_getspecific ou pthread_setspecific Subroutine
Objectif
Renvoie et définit les données spécifiques à l'unité d'exécution associées à la clé spécifiée.
Bibliothèque
Bibliothèque d'unités d'exécution (libpthreads.a)
Syntaxe
#include <pthread.h> void *pthread_getspecific (key)
pthread_key_t key; int pthread_setspecific (key, value)
pthread_key_t key;
const void *value;Descriptif
La fonction pthread_setspecific associe une valeur spécifique à une unité d'exécution à une clé obtenue via un appel précédent à pthread_key_create. Différentes unités d'exécution peuvent lier des valeurs différentes à la même clé. Ces valeurs sont généralement des pointeurs vers des blocs de mémoire allouée dynamiquement qui ont été réservés à l'utilisation par l'unité d'exécution appelante.
La fonction pthread_getspecific renvoie la valeur actuellement liée à la clé spécifiée pour le compte de l'unité d'exécution appelante.
L'effet de l'appel de pthread_setspecific ou pthread_getspecific avec une valeur key non obtenue à partir de pthread_key_create ou après la suppression de la clé avec pthread_key_delete n'est pas défini.
pthread_setspecific et pthread_getspecific peuvent être appelés à partir d'une fonction de destructeur de données spécifique à une unité d'exécution. Toutefois, l'appel de pthread_setspecific à partir d'un destructeur peut entraîner une perte de mémoire ou des boucles infinies.
Paramètres
| Article | Descriptif |
|---|---|
| key | Indique la clé à laquelle la valeur est liée. |
| value | Indique la nouvelle valeur spécifique à l'unité d'exécution. |
Valeurs renvoyées
La fonction pthread_getspecific renvoie la valeur de données spécifique à l'unité d'exécution associée à la clé donnée. Si aucune valeur de données spécifique à l'unité d'exécution n'est associée à la clé, la valeur NULL est renvoyée. Si l'opération aboutit, la fonction pthread_setspecific renvoie zéro. Sinon, un numéro d'erreur est renvoyé pour indiquer l'erreur.
Codes d'erreur
La fonction pthread_setspecific échouera si:
| Article | Descriptif |
|---|---|
| ENOMEM | La mémoire est insuffisante pour associer la valeur à la clé. |
La fonction pthread_setspecific peut échouer si:
| Article | Descriptif |
|---|---|
| EINVAL | La valeur de clé n'est pas valide. |
Aucune erreur n'est renvoyée par pthread_getspecific.
Ces fonctions ne renverront pas le code d'erreur EINTR.