pthread_cond_destroy ou pthread_cond_init Sous-routine

Objectif

Initialise et détruit les variables de condition.

Bibliothèque

Bibliothèque d'unités d'exécution (libpthreads.a)

Syntaxe

#include <pthread.h>

int pthread_cond_init (cond, attr)
pthread_cond_t *cond;
const pthread_condattr_t *attr;

int pthread_cond_destroy (cond)
pthread_cond_t *cond;

pthread_cond_t cond = PTHREAD_COND_INITIALIZER;

Descriptif

La fonction pthread_cond_init initialise la variable de condition référencée par cond avec les attributs référencés par attr. Si attr est NULL, les attributs de variable de condition par défaut sont utilisés ; l'effet est identique à la transmission de l'adresse d'un objet d'attributs de variable de condition par défaut. Une fois l'initialisation réussie, l'état de la variable de condition est initialisé.

La tentative d'initialisation d'une variable de condition déjà initialisée entraîne un comportement non défini.

La fonction pthread_cond_destroy détruit la variable de condition spécifiée par cond; l'objet devient, en effet, non initialisé. Une implémentation peut amener pthread_cond_destroy à définir l'objet référencé par cond sur une valeur non valide. Un objet de variable de condition détruite peut être réinitialisé à l'aide de pthread_cond_init; les résultats du référencement de l'objet après sa destruction ne sont pas définis.

Il est prudent de détruire une variable de condition initialisée pour laquelle aucune unité d'exécution n'est actuellement bloquée. La tentative de destruction d'une variable de condition sur laquelle d'autres unités d'exécution sont actuellement bloquées entraîne un comportement non défini.

Dans les cas où les attributs de variable de condition par défaut sont appropriés, la macro PTHREAD_COND_INITIALIZER peut être utilisée pour initialiser les variables de condition qui sont allouées de manière statique. L'effet est équivalent à l'initialisation dynamique par un appel à pthread_cond_init avec le paramètre attr spécifié comme NULL, sauf qu'aucune vérification des erreurs n'est effectuée.

Paramètres

Article Descriptif
cond Pointeur vers la variable de condition.
attr Indique les attributs de la condition.

Valeurs renvoyées

Si l'opération aboutit, les fonctions pthread_cond_init et pthread_cond_destroy renvoient zéro. Sinon, un numéro d'erreur est renvoyé pour indiquer l'erreur. Les vérifications d'erreur EBUSY et EINVAL, si elles sont implémentées, agissent comme si elles étaient effectuées immédiatement au début du traitement de la fonction et ont provoqué un retour d'erreur avant de modifier l'état de la variable de condition spécifiée par cond.

Codes d'erreur

La fonction pthread_cond_init échoue si:

Article Descriptif
FEAGA Le système ne disposait pas des ressources nécessaires (autres que la mémoire) pour initialiser une autre variable de condition.
ENOMEM La mémoire est insuffisante pour initialiser la variable de condition.

La fonction pthread_cond_init peut échouer si:

Article Descriptif
EINVAL La valeur spécifiée par attr n'est pas valide.

La fonction pthread_cond_destroy peut échouer si:

Article Descriptif
EBUSY L'implémentation a détecté une tentative de destruction de l'objet référencé par cond alors qu'il est référencé (par exemple, lorsqu'il est utilisé dans pthread_cond_wait ou pthread_cond_timedwait par une autre unité d'exécution.
EINVAL La valeur spécifiée par cond n'est pas valide.

Ces fonctions ne renverront pas le code d'erreur EINTR.