Provided by:
manpages-es_1.55-3_all 
NOMBRE
flockfile, ftrylockfile, funlockfile - bloqueo sobre el objeto FILE de
stdio
SINOPSIS
#include <stdio.h>
void flockfile(FILE *filehandle);
int ftrylockfile(FILE *filehandle);
void funlockfile(FILE *filehandle);
DESCRIPCIÓN
Las funciones stdio son hilo-seguro. Ésto se consigue asignando a cada
objeto FILE una cuenta de bloqueos (lockcount) y (si la cuenta es
distinta de cero) un hilo que actúa de propietario. Por cada llamada a
la biblioteca, estas funciones esperan hasta que el objeto FILE deje de
estar bloqueado por algún otro hilo diferente, después lo bloquean,
realizan la petición de E/S solicitada, y desbloquean el objeto de
nuevo.
(Nota: este bloqueo no tiene nada que ver con el bloqueo realizado por
funciones como flock(2) y lockf(3).)
Todo ésto es invisible al programador de C, pero puede haber dos
razones para querer un control más detallado. Por una parte, una serie
de acciones de E/S de un hilo pueden ir juntas, y no deberían ser
interrumpidas por la E/S de ningún otro hilo. Por otra parte, la
sobrecarga del bloqueo debería evitarse para lograr una mayor
eficiencia.
Para este propósito, un hilo puede bloquear explícitamente el objeto
FILE, realizar su serie de acciones de E/S, y después desbloquearlo.
Ésto impide que otros hilos lo interrumpan. Si la razón para hacer esto
es lograr una mayor eficiencia, se debe realizar la E/S con las
versiones no-bloqueantes de las funciones stdio: con getc_unlocked() y
putc_unlocked() en lugar de getc() y putc().
La función flockfile() espera a que *filehandle deje de estar bloqueado
por otro hilo, hace al hilo actual propietario de *filehandle, e
incrementa la cuenta de bloqueos.
La función funlockfile() decrementa la cuenta de bloqueos.
La función ftrylockfile() es una versión no-bloqueante de flockfile().
No hace nada en el caso de que otro hilo sea el propietario de
*filehandle, en otro caso obtiene la propiedad e incrementa la cuenta
de bloqueos.
VALOR DEVUELTO
La función ftrylockfile() devuelve cero cuando tiene éxito (obtuvo el
bloqueo), y un valor distinto de cero en caso de fallo.
ERRORES
Ninguno.
DISPONIBILIDAD
Estas funciones están disponibles cuando _POSIX_THREAD_SAFE_FUNCTIONS
está definida. Están presentes en libc desde libc 5.1.1 y en glibc
desde glibc 2.0.
CONFORME A
POSIX.1
VÉASE TAMBIÉN
unlocked_stdio(3)
18 octubre 2001 LOCKFILE(3)