[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