flockfile

Autres langues

Langue: pl

Autres versions - même langue

Version: 2001-10-18 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

NAZWA

flockfile, ftrylockfile, funlockfile - blokowanie strumienia FILE dla stdio

SK£ADNIA


#include <stdio.h>



void flockfile(FILE *filehandle);


int ftrylockfile(FILE *filehandle);
void funlockfile(FILE *filehandle);

OPIS

Powy¿sze funkcje stdio s± przystosowane do pracy wielow±tkowej. Uzyskuje siê to poprzez przypisanie ka¿demu z obiektów FILE licznika blokad oraz (dla niezerowej warto¶ci licznika) w±tku bêd±cego jego w³a¶cicielem. Przy ka¿dym wywo³aniu funkcji bibliotecznej funkcje te czekaj± a¿ obiekt FILE nie bêdzie ju¿ blokowany przez inny w±tek, a nastêpnie go blokuj±, wykonuj± ¿±dane operacje we/wy i odblokowuj± obiekt ponownie.

(Uwaga: blokowanie to nie ma nic wspólnego z blokowaniem plików za pomoc± funkcji w rodzaju flock(2) i lockf(3).)

Wszystko to dzieje siê w sposób niewidoczny dla programisty C, jednak mog± pojawiæ siê dwa powody wymagaj±ce bardziej szczegó³owej kontroli. Z jednej strony, szereg operacji we/wy wykonywanych w jednym w±tku mo¿e stanowiæ ca³o¶æ, która nie mo¿e zostaæ przerwana przez operacjê we/wy innego w±tku. Z drugiej strony, mo¿e istnieæ potrzeba unikniêcia narzutu wywo³anego przez pojedyncze blokady w celu uzyskania wiêkszej wydajno¶ci.

W takich sytuacjach w±tek mo¿e jawnie zablokowaæ obiekt FILE, wykonaæ szereg operacji we/wy i odblokowaæ go. Uniemo¿liwia to innym w±tkom przeszkadzanie w miêdzyczasie. Je¶li powodem za³o¿enia blokady ma byæ osi±gniêcie wiêkszej wydajno¶ci, wykonuje siê operacje we/wy za pomoc± nieblokuj±cych wersji funkcji stdio: getc_unlocked() i putc_unlocked() zamiast getc() i putc().

Funkcja flockfile() czeka a¿ *filehandle nie bêdzie zablokowany przez inny w±tek, a nastêpnie czyni bie¿±cy w±tek w³a¶cicielem *filehandle i zwiêksza o jeden licznik blokad.

Funkcja funlockfile() zminiejsza licznik blokad o jeden.

Funkcja ftrylockfile() jest nieblokuj±c± wersj± flockfile(). Nie robi ona nic gdy inny w±tek jest w³a¶cicielem *filehandle, a w przeciwnym przypadku przejmuje w³asno¶æ i zwiêksza o jeden licznik blokad.

WARTO¦Æ ZWRACANA

Funkcja ftrylockfile() zwraca zero w przypadku sukcesu (blokada zosta³a za³o¿ona), a warto¶æ niezerow± w razie niepowodzenia.

B£ÊDY

Brak.

DOSTÊPNO¦Æ

Funkcje te s± dostêpne, gdy zdefiniowane jest _POSIX_THREAD_SAFE_FUNCTIONS. Znajduj± siê one w libc pocz±wszy od libc 5.1.1 oraz w glibc pocz±wszy od glibc 2.0.

ZGODNE Z

POSIX.1

ZOBACZ TAK¯E

unlocked_stdio(3)