[Cascavel-pm] NFS x flock

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


Nilson Santos Figueiredo Junior wrote:
> 
> É só, ao invés de abrir o lock e fechar em seguida, abrir com
> exclusividade para escrita e só fechar o arquivo no final da região
> crítica. Assim, o open() do segundo processo iria falhar ao tentar
> abrir o arquivo, mesmo se ele entrasse no "if(! -e $lockfile)".
> 
> Na verdade, nesse caso, o "if(! -e $lockfile)" talvez pudesse até ser
> removido e confiar apenas no sucesso ou não do open().
> 

"Talvez" não, com certeza. Jogar o open() - ou sysopen(), como o Alceu
sugeriu - com exclusividade sobre o arquivo e dentro de um eval()
elimina não só a necessidade do if() como joga a responsabilidade da
concorrência para a implementação do Perl (que não parece ter esse tipo
de problema, até onde eu sei).

É uma ótima idéia, Nilson, e acho que vou fazer alguns testes em cima
disso para meus códigos (parece ser bem mais portátil que o próprio
flock(), então me pergunto se de fato dá tão certo na prática quanto na
teoria). Se der certo, dava até pra fazer um módulo de lockfile que
implemente o lock dessa maneira, hein? ;)

[]s

breno


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