From: Gustavo Martin Morcuende Date: Tue, 31 May 2016 00:57:58 +0000 (+0200) Subject: locks: comentarios en README X-Git-Url: https://git.gumartinm.name/?a=commitdiff_plain;h=978d15949b49f180bc27d5e3710e38488b8c39aa;p=CForFun.git locks: comentarios en README --- diff --git a/locks/README b/locks/README index 96b2e25..f432307 100644 --- a/locks/README +++ b/locks/README @@ -4,11 +4,32 @@ flockfile: este lock es incompatible con flock o fcntl solo sirve a nivel de proceso, NO ENTRE PROCESOS. Simplemente tiene un contador asociado al file descriptor abierto, este contador está en memoria y no se comparte entre procesos + flock: - no es hilo seguro!!! Si dos hilos del mismo proceso intentan coger el mismo file lock pueden fallar :( - flock es asociado con proceso pero parece funcionar también con hilos pero como no es hilo seguro supongo que puede dar problemas :/ + no sé si es hilo seguro o no + lo que sí sé es que en Linux parece funcionar con hilos + en algunos casos da problemas pero puede que sea porque en algunos sistemas puede que esté implementado con fcntl (no estoy seguro de esto): http://stackoverflow.com/questions/9462532/multiple-threads-able-to-get-flock-at-the-same-time - + (tiene pinta de que ese problema viene dado porque el flock de ese sistema está implementado con fcntl, pero no estoy seguro de esto que digo) + + man flock: + * If a process uses open(2) (or similar) to obtain more than one descriptor for the same file: + Como mi programa, un proceso que hace muchas llamadas open para el mismo archivo + * these descriptors are treated independently by flock(): + Lo que quiere decir con esto es que si hiciera esto + open 1 + flock 1 + flock 1 + el segundo flock no hace nada pero si hago esto + open 1 + flock 1 + open 2 + flock 2 + el flock 1 y el flock 2 son tratados de forma independiente + * An attempt to lock the file using one of these file descriptors may be denied by a lock that the calling process has already placed via another descriptor: + lo del may da miedo (parece decir que puede o no bloquear...) + en el mismo proceso bloque si he hecho más de un open al mismo archivo (como he puesto justo encima) + fcntl: solo funciona con procesos no es hilo seguro