[Moscow.pm] Синхронно-асинхронная инициализация одинаковых процессов

Kaltashkin Eugene zhecka на gmail.com
Пн Мар 22 03:07:14 PDT 2010


22.03.2010 13:02, Sergey Aleynikov пишет:
> Hello,
>
>    
>> $lockfile = "/var/tmp/pradm_memcached_config_load.lock";
>> if(!-f $lockfile)
>> {
>>   print STDERR "$$ Creating lock file\n";
>>   open OUT,">$lockfile" or die "Cannot write to $lockfile $!";
>>   print OUT $$;
>>   close OUT;
>>   $lock = 1;
>> }
>>      
> Поздравляю, у вас race между -f и "open OUT". Да ещё и print, чтобы
> race'y было проще сработать :)
>
> Посмотрите на cpan'e, там точно есть что-либо. Правильный алгоритм -
> это либо открыть, попробовать сделать flock() - получилось, наш файл.
> Либо создавать файл с O_EXCL - тогда открыть не получится, если файл
> уже создан.
>
>    
хм. ну лан. щаз попробую flock заюзать. может поможет.
Спасиб.



Подробная информация о списке рассылки Moscow-pm