|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Victor Wagner 2:5020/400 05 May 2003 16:07:57 To : "Serg Chervjakov" Subject : Re: Движок -------------------------------------------------------------------------------- Serg Chervjakov <serg@enseza.elcom.ru> wrote: SC> ----- SC> Two potentially non-obvious but traditional `flock' semantics SC> are that it waits indefinitely until the lock is granted, and SC> ----- SC> Это означает, что если я делаю flock(DATA) (DATA - мой стандартный хэндл), SC> то прога остановится, пока файл не будет разблокирован? А надо ли его при SC> этом Если его кто-то уже заблокировал. По умолчанию файл разблокирован. SC> предварительно блокировать этим же flock? Просто хоть у меня и есть две спец SC> функции (getfile,printfile), но в самих этих функциях работа с файлами очень SC> нетривиальна (кроме того, что они считывают и записывают - делают еще кучу SC> операций). Потому мне не очень хотелось бы в один прекрасный момент SC> заблокировать файл, а потом перед завершением функции забыть его SC> разблокировать:). Да и наконец... правильно ли я понял: SC> LOCK_SH - блокирует файл Lock Shared. То есть позволяет любому другому процессу тоже заблокировать этот же файл. Hо не дает получить Exclusive lock. SC> LOCK_EX - не въехал (исключительный LOCK) - это случайно не то самое, что Lock Exclusive - не дает никакому другому процессу получить никакую другую блокировку. Обычное применение следующее: Если ты хочешь файл читать, и не хочешь чтобы кто-то под носом у тебя его изменил, ты просишь shared блокировку. При этом любой другой желающий почитать ее тоже может попросить и получит. Если ты хочешь файл писать, то происи эксклюзивную (исключительную) блокировку. Если ее тебе дали, это значит что никто другой не держит в данны момент ни shared, ни exclusive блокировку (и не получит, пока LOCK_EX держишь ты), SC> необходимо, что б прога вошла в режим ожидания? Чтобы она вошла в режим ожидания, нужно чтобы кто-то другой держал несовместимую блокировку. EXCLUSIVE несовместима ни с кем, на то она и EXCLUSIVE, а SHARED совместима только с другой SHARED. SC> LOCK_UN - снимает последнюю наложенную блокировку. -- --- ifmail v.2.15dev5 * Origin: Free Net of Leninsky,45 (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/15178a6a394a6.html, оценка из 5, голосов 10
|