[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