[Moscow.pm] Синхронно-асинхронная инициализация одинаковых процессов
Mons Anderson
mons на cpan.org
Ср Мар 24 09:10:02 PDT 2010
Есть очень неплохой модуль Pid::File::Flock
On Monday 22 March 2010 13:02:59 Sergey Aleynikov wrote:
> 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 - тогда открыть не получится, если файл
> уже создан.
>
> Best regards,
> Sergey Aleynikov
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
--
Mons Anderson aka Vladimir Perepelitsa
<mons на cpan.org> / #99779956 / quanth на irc.freenode.net
Подробная информация о списке рассылки Moscow-pm