|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Artem Chuprina 2:5020/371.32 18 Jan 2001 13:00:24 To : Andrei V. Lisyansky Subject : Re: flock -------------------------------------------------------------------------------- В твоём письме от Tue, 16 Jan 2001 19:02:30 +0300 написано: AVL>>> while (-e "lockfile") {sleep(1);} #Вдруг кто-то уже работает AVL>>> с файлом, ждём! SG>> 2) и в этот промежуток второй процесс, запустившийся чуть ранее, SG>> создает лок-файл AVL> Согласен, но ведь возможно уменьшение реакции, за счёт значений AVL> менее секунды? AVL>>> open LOCK, ">lockfile"; close LOCK; #Дождались, создаём AVL>>> свой. SG>> 3) этот процесс его перезаписывает SG>> и далее оба процесса работают с одним и тем же файлом. AVL> Мда, решение далеко не претендует на применение, но всё же, AVL> реально же найти замену flock()? Реально, но очень геморройно. Ключевые слова - "неразрушающая атомарная операция". В юниксах такой является link(), на тех файловых системах, которые ее поддерживают (в юниксах исторически та же проблема на NFS - локи работают ненадежно), в досе - rename(). В юниксе rename() тоже атомарная, но разрушающая, так что следует быть бдительным. И дополнять обработчиками die, сигналов, и проверкой кроном залипших флаг-файлов. -- Artem Chuprina E-mail: ran@ran.pp.ru Programmer FIDO: 2:5020/371.32 Memonet Ltd. Phone: +7-095-284-1356 --- slrn/0.9.6.3-as (Linux) * Origin: AKA с подствольным плюсомётом (2:5020/371.32) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/72375f71e37c7.html, оценка из 5, голосов 10
|