Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section3 - Sous-fonctions]
LOCKFILE
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- ERREURS
- DISPONIBILITÉ
- CONFORMITÉ À
- VOIR AUSSI
- TRADUCTION
NOM
flockfile, ftrylockfile, funlockfile - Verrouiller un flux FILE pour stdio
SYNOPSIS
#include <stdio.h>
void flockfile(FILE *filehandle);
int ftrylockfile(FILE *filehandle);
void funlockfile(FILE *filehandle);
DESCRIPTION
Les fonctions stdio peuvent être utilisées dans un contexte
multi-threads. Ceci est réalisé en affectant à chaque objet de type FILE un
« compteur de verrouillage » et (si le « compteur de verrouillage » est
non nul) un thread propriétaire. Lors de chaque appel à la bibliothèque, ces
fonctions attendent jusqu'à ce que l'objet FILE ne soit plus verrouillé par
un thread différent, puis elles le verrouillent, réalisent l'entrée/sortie
demandée, et libèrent l'objet.
(Remarque : ce verrouillage n'a rien à voir avec le verrouillage de fichier
réalisé par des fonctions comme flock(2) et lockf(3).)
Tout ceci est invisible au programmeur en C, mais il existe deux raisons de
souhaiter un contrôle plus fin. D'une part, un thread peut réaliser une
série d'entrées/sorties interdépendantes, ces opérations ne devant pas être
interrompues par les entrées/sorties d'autres threads. D'autre part, on peut
désirer supprimer la surcharge induite par ce verrouillage afin d'obtenir de
meilleures performances.
À cette fin, un thread peut verrouiller explicitement un objet de type FILE,
puis réaliser sa série d'entrées/sorties, et enfin, relâcher le verrou. Cela
empêche les autres threads d'intervenir sur le flux. Si la motivation du
verrouillage est la recherche de meilleures performances, on peut réaliser
l'entrée/sortie à l'aide des versions non bloquantes des fonctions stdio :
avec getc_unlocked() et putc_unlocked() au lieu de getc() et
putc().
La fonction flockfile() attend jusqu'à ce que *filehandle ne soit plus
verrouillé par un autre thread, puis affecte *filehandle au thread
actuel, et incrémente le « compteur de verrouillage ».
La fonction funlockfile() décrémente le « compteur de verrouillage ».
La fonction ftrylockfile() est une version non bloquante de
flockfile(). Elle ne fait rien lorsqu'un autre thread est propriétaire de
*filehandle, sinon, elle se l'approprie et incrémente le « compteur de
verrouillage ».
VALEUR RENVOYÉE
La fonction ftrylockfile() renvoie zéro en cas de succès (le verrou a été
obtenu), et une valeur non nulle en cas d'échec.
ERREURS
Aucune.
DISPONIBILITÉ
Ces fonctions sont disponibles lorsque _POSIX_THREAD_SAFE_FUNCTIONS est
défini. Elles sont présentes dans la libc depuis la version 5.1.1 et dans
la glibc depuis la version 2.0.
CONFORMITÉ À
POSIX.1-2001.
VOIR AUSSI
unlocked_stdio(3)
TRADUCTION
Cette page de manuel a été traduite par
Stéphan Rafin <stephan DOT rafin AT laposte DOT net> en 2002,
puis a été mise à jour par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction par un rapport de bogue sur
le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en
utilisant la commande
« man -L C <section> <page_de_man> ».
|