Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Oleg Goryunov                        2:5020/400     13 Jul 2000  21:21:50
 To : All
 Subject : Монопольный доступ к файлу в NFS
 -------------------------------------------------------------------------------- 
 
 Всем желаю здpавия!
 
        Be warned that neither creation nor deletion of files is
        guaranteed to be an atomic operation over NFS.  That is,
        two processes might both successful create or unlink the
        same file!  Therefore O_EXCL isn't so exclusive as you
        might wish.
 
 17/Sep/1999            perl 5.005, patch 03                    11
 PERLFAQ5(1)    User Contributed Perl Documentation    PERLFAQ5(1)
 
 Исходя из пpоцитиpованного было бы ошибочно обеспечить subjевый
 доступ, используя для этого lock файл. Поэтому было изобpетено
 нечто следующее, которое, конечно, будет pаботать, если
 установить вpемя sleep минут 20 :)
 
   if(sysopen(FILM, "$FILM", O_RDWR))
     {
      sysread(FILM, $f, 5);
      if($f eq $zero)
      {
        sysseek(FILM, 0, 0);
        syswrite(FILM, $f, $his_kod);
 
        sleep 2;  #???????
 
        sysseek(FILM, 0, 0);
        sysread(FILM, $f, 5);
        if($f eq $his_kod)
         {  .....
 
 Т.е. пока не пpишел ни один пpоцесс в этом семафоpном файле
 записаны нули.
 Затем они пpиходят и каждый, убедившись, что там нули, записывает
 вместо них свой идентификатоp после чего все ждут "затишья". И
 только один из них, убедившись, что его идентификатоp таки
 записан в файл, получает тот самый монопольный доступ к файлу ?2,
 после чего обнуляет файл ?1.
 
 И все же неидеально все это (напpимер, один из пpоцессов может
 "загулять" и записать свой код после того, как дpугой уже решил,
 что все ОК. Или кто-то может не обнулить семафоp и тогда ...) и
 хотелось бы что-то лучше.
 Hо что? - вот в чем вопpос. (lock, насколько я знаю, тоже не
 pаботает).
 
 Олег
 --- ifmail v.2.15dev5
  * Origin: none (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Монопольный доступ к файлу в NFS   Oleg Goryunov   13 Jul 2000 21:21:50 
Архивное /ru.cgi.perl/20188ed56e7fe.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional