Sous-routine pthread_once
Objectif
Exécute une routine une seule fois dans un processus.
Bibliothèque
Bibliothèque d'unités d'exécution (libpthreads.a)
Syntaxe
#include <pthread.h>
int pthread_once (once_control, init_routine)
pthread_once_t *once_control;
void (*init_routine)(void); , pthread_once_t once_control = PTHREAD_ONCE_INIT;Descriptif
La sous-routine pthread_once exécute la routine init_routine exactement une fois dans un processus. Le premier appel de cette sous-routine par une unité d'exécution du processus exécute la routine donnée, sans paramètres. Tout appel ultérieur n'aura aucun effet.
La routine init_routine est généralement une routine d'initialisation. Plusieurs initialisations peuvent être gérées par plusieurs instances de structures pthread_once_t . Cette sous-routine est utile lorsqu'une initialisation unique doit être effectuée par une unité d'exécution parmi plusieurs. Il réduit les exigences de synchronisation.
Paramètres
| Article | Descriptif |
|---|---|
| contrôle_une fois | Pointe vers une structure de contrôle de synchronisation. Cette structure doit être initialisée par la macro d'initialiseur statique PTHREAD_ONCE_INIT. |
| routine init_routine | Pointe vers la routine à exécuter. |
Valeurs renvoyées
Une fois l'opération terminée, pthread_once renvoie zéro. Sinon, un numéro d'erreur est renvoyé pour indiquer l'erreur.
Codes d'erreur
Aucune erreur n'est définie. La fonction pthread_once ne renvoie pas le code d'erreur EINTR.