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.