[Cascavel-pm] NFS x flock

Breno G. de Oliveira breno em clavis.com.br
Sexta Fevereiro 10 05:32:59 PST 2006


Gabriel Vieira wrote:
> Nesse caso.. qual a utilidade do flock?
> 

O flock() é um recurso teoricamente testado e garantido de que vai
funcionar conforme ele se propõe. Já a implementação que o Nilson
sugeriu pode deixar o seu código menos claro, a menos que você tenha o
cuidado de criar uma função de locking e implementar o que ele disse
através dela. A implementação do Nilson é mais portável (*se* o sistema
operacional em questão prevê abertura exclusiva) porém mais lenta (e.g.
é interpretada e não está embutida no Perl).

Além disso, o flock() é um recurso do sistema operacional, assim como
fnctl(), sendo utilizado por muitos programas independentes para testar
regiões críticas compartilhadas. Como o Alceu já havia conversado comigo
em outra thread sobre o tema ("como garantir file lock para outros
programas?"), ambas as funções são utilizadas mas são incompatíveis
entre sí, mas de um modo geral se vc sabe que o programa X feito em
(C|Perl|Pascal|Cobol|Delphi|Assembly|VB|Python) usa fnctl() para fazer
locking de seus arquivos, vc pode usar o fnctl() do Perl para garantir
que não vai entrar em concorrência com eles. O mesmo para o flock().

Ou seja, flock() e fnctl() são recursos para locking() genuínos do SO e
que ajudam não só quando duas instâncias do mesmo programa querem a
mesma RC ao mesmo tempo, como também quando programas diferentes (em
diferentes linguagens) também o querem.

Já a idéia do Nilson é exclusiva para duas instâncias do seu programa (a
menos que outra pessoa leia o seu código e compare a RC da mesma maneira
 que vc fez).

Acabei de acordar, não sei se fui muito claro... qualquer dúvida é só
gritar ;)


[]s,

breno


Mais detalhes sobre a lista de discussão Cascavel-pm