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.

Remarque: Le fichier d'en-tête pthread.h doit être le premier fichier inclus de chaque fichier source utilisant la bibliothèque d'unités d'exécution. Sinon, l'indicateur de compilation -D_THREAD_SAFE doit être utilisé ou le compilateur cc_r doit être utilisé. Dans ce cas, l'indicateur est automatiquement défini.

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.