flockfile, ftrylockfile, funlockfile - bloqueo sobre el objeto FILE de stdio
Biblioteca Estándar C (
libc,
-lc)
#include <stdio.h>
void flockfile(FILE *filehandle);
int ftrylockfile(FILE *filehandle);
void funlockfile(FILE *filehandle);
A continuación se muestran todas las funciones:
/* Since glibc 2.24: */ _POSIX_C_SOURCE >= 199309L
|| /* glibc <= 2.23: */ _POSIX_C_SOURCE
|| /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
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 realizadopor 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(3) y
putc_unlocked(3) en lugar de
getc(3) y
putc(3).
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.
La función
ftrylockfile() devuelve cero cuando tiene éxito
(obtuvo el bloqueo), y un valor distinto de cero en caso de fallo.
Ninguno.
Para obtener una explicación de los términos usados en esta
sección, véase
attributes(7).
Interfaz |
Atributo |
Valor |
flockfile(), ftrylockfile(), funlockfile() |
Seguridad del hilo |
Multi-hilo seguro |
POSIX.1-2001, POSIX.1-2008.
Estas funciones están disponibles cuando
_POSIX_THREAD_SAFE_FUNCTIONS está definida.
unlocked_stdio(3)
La traducción al español de esta página del manual fue
creada por Miguel Pérez Ibars <
[email protected]>
Esta traducción es documentación libre; lea la
GNU
General Public License Version 3 o posterior con respecto a las
condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página
del manual, envíe un correo electrónico a
[email protected]