|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Yan Alexandrovsky 2:5020/1626.43 15 Jan 2001 08:35:49 To : Andrei V. Lisyansky Subject : flock -------------------------------------------------------------------------------- 13 января 2001 18:20, Andrei V. Lisyansky -> Artem Chuprina: DW>>> Почемy ActivePerl for Win32 не понимает сабжевyю командy? AC>> Потому что операционная система MS-DOS и графические надстройки AC>> над ней не поддерживают такие локи. В NT понимает. AL> Я конечно извиняюсь за запоздалую реакцию на данное письмо, но AL> не проще ли обойти flock() следующей конструкцией?: AL> while (-e "lockfile") {sleep(1);} #Вдруг кто-то уже работает с AL> файлом, ждём! AL> open LOCK, ">lockfile"; close LOCK; #Дождались, создаём свой. 1) Снятие лока при умирании процесса. 2) Установка лока должна быть атомарной операцией. Иначе 2 исполняющихся паралельно процесса... Hет, не думай, что ситуация нереальная, есть многое на свете... PS: банальный пример - винт ушел в зелень (или просто диск удален, это дискета и т.п.), два процесса (с одинаковыми приоритетами) запросили о существовании файла (да, с гигантским интервалом - в пол секунды... но)... оба запроса висят (в смысле исполняется в этот момент времени), ОС читает... Потом оба треда получают ответ, что файла нет... Их дальнейшие действия? Да, это банальный прогноз ситуации. До встречи. Ян. --- - Руки Венеры Милосской 3.00+ штуки * Origin: Hадо наносить пользу и причинять добро (2:5020/1626.43) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/45883a62aa2d.html, оценка из 5, голосов 10
|