Форум сайта python.su
LexanderРечь идёт об обычных замках, создаваемых функцией LockFile/LockFileEx? Ну, это самые быстрые замки. Описанный мною метод намного медленнее, потому что требует больше операций.
bialix
Файловые блокировки в 1С существенно сказываются на производительности. Причем, зависимость увеличения времени обработки 1-го справочника, документа от количества пользователей и объема БД - прямая.
Плюс проблемным местом именно под Вин является зависание или вылет клиента во время операций. Винда иногда забывает снять блокировку, даже если нет хозяина этой блокировки.
Офлайн
bialixА почему нельзя просто создать каталог held без предварительных манипуляций? Насколько я помню mkdir - атомарная операция. Или на винде не так?
Файл внутри каталога нужен чтобы предотвратить успешное переименовывание на Linux-платформе. В случае пустого каталога операция может закончиться успешно даже если каталог уже существует.
Если процесс-локер упал или висит, то любой процесс может разрушить замок.Каким образом этот любой процесс поймет, что процесс-локер висит или упал? Или это ему не нужно знать?
Офлайн
u4upyУ меня тоже самое… :)
Именно сейчас нашему приложению безразлично, что там автор говорит.
Офлайн
Александр, а где именно в коде bzr лежит реализация этих локов? Буквально сегодня потребовалось сочинить нечто подобное. Должно работать на NFS.
Офлайн
Интересное совпадение - мне тоже и тоже на NFS. У меня, как не странно, заработал fcntl.lockf, но я все равно опасаюсь.
Кстати, у меркуриала тоже что-то подобное есть. Но там на симлинках сделано, так что под виндой работать не будет, скорее всего.
Офлайн
а как же меркуриал на винде запускается?
lockf, наверное, можно в простых случаях - но хочется изучить все варианты. Ребята из bzr, как я думаю, набили на этом вопросе все возможные шишки.
Офлайн
Судя по коду если симлинки не поддерживаются ос, то создается файл таким образом: os.open(pathname, os.O_CREAT | os.O_WRONLY | os.O_EXCL)
Не уверен, что это будет работать под виндой на NFS шарах и нормально восприниматься скажем линухом с другой машины.
Офлайн
igor.kaistСтандартная 3-уровневая архитектура. :)
Как такой вариант, имеет право на жизнь?
Офлайн
Андрей Светловbzrlib/lockdir.py (тесты: bzrlib/tests/test_lockdir.py)
Александр, а где именно в коде bzr лежит реализация этих локов? Буквально сегодня потребовалось сочинить нечто подобное. Должно работать на NFS.
Офлайн
EdНа винде mkdir тоже атомарная операция. А вот как на Линуксе с этим? Создатель библиотеки lockfile (см. на pypi) утверждает, что для Линукса более правильным решением является использование link. Признаюсь, что в потрохах Линукса я не спец.bialixА почему нельзя просто создать каталог held без предварительных манипуляций? Насколько я помню mkdir - атомарная операция. Или на винде не так?
Файл внутри каталога нужен чтобы предотвратить успешное переименовывание на Linux-платформе. В случае пустого каталога операция может закончиться успешно даже если каталог уже существует.Если процесс-локер упал или висит, то любой процесс может разрушить замок.Каким образом этот любой процесс поймет, что процесс-локер висит или упал? Или это ему не нужно знать?
Отредактировано (Янв. 6, 2010 11:17:18)
Офлайн