RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> > > > В Regine не поддерживается установка атрибутов файлов при поиске SysFileTree, о чем прямо написано в документации. Программа не останавливается по ошибке, но и не выполняет установку атрибутов. Возможно альтернативные версии библиотеки ведут себя по другому, не проверял так как важна совместимость. > > > > В настоящее время нашел только один способ обойти проблему, использовать команду системы «attrib», она есть везде. Но очень тормозная. Так что время выполнения скриптов увеличивается. > > > > Такой вопрос, а есть иной способ установить флаги файлов из Rexx, кроме SysFileTree и attrib? > > > Еще со времен DOS и Нетвари существует универсальный и простой, а главное правильный, поскольку атомарный, принцип лочки файлов. А именно переименование. Команда rename выполняется атомарно на всех существующих системах с очень данных времен. > > > Я в свое время написал большое количество распределенных многозадачных систем именно на этой технологии. И лучшего для файлов пока еще не придумали. > > > Коротко - при захвате файла процесс его переименовывает и работает. Как закончил, может переименовать обратно. Все остальное - от лукавого. > > > > А если важно имя файла? Например, у всех файлов стартерное расширение "txt", файлы с иным расширением могут находиться в этом месте, но сознательно игнорируются. А в имени файла закодирована дата. При старте скрипт ищет все файлы с расширением "txt" и с нужной датой (датами) в имени, и дальше ведет отработку найденных файлов. > > > > Ситуация 1: некий скрипт начал работу с файлом, и изменил расширение на "tmp". Результат: данный файл не был найден при поиске, и как следствие не отработается. Хотя на момент предполагаемой отработки, он мог уже освобожден. > > Ситуация 2: Скрипт залочил файл путем создания флага "имя_stop.txt". Исходный файл найден при поиске, перед началом отработки нашли лочку и ждем. Опа - лочка пропала, ставим свою. А что будет, если два или более скрипта работают почти синхронно (разве это невозможно)? То есть отсутствие лочки увидели сразу два скрипта, и оба начали ставить свою лочку. Мы думали обходить это двух уровненной лочкой, по двум атрибутам и произвольной паузой (для раз синхронизации) между первой и второй лочкой. > > > > Пока меня очень заинтересовали семафоры. Разбираюсь по чуть-чуть. > > Но начался рабочий год... и что-то все резко его начали. Обычно народ просыпался только к 15-17 числу... > > С семафорами можешь запросто наступить на те же грабли, что описал в "ситуации 2". Надо уходить от неопределённости с файлами, например, пусть скрипты получают для обработки не список, а один файл, и если он занят, то ждёт его освобождения по семафору или файловой метке. А основная программа пусть ищет файлы и запускает скрипты... Тогда, по крайней мере, там можно будет хоть как-то контролировать весь процесс.
_, __, _, __,
/_\ |_) /_\ |_)
| | | | | | \
~ ~ ~ ~ ~ ~ ~
Programmed by
Dmitri Maximovich
,
Dmitry I. Platonoff
,
Eugen Kuleshov
.
25.09.99 (c) 1999,
RU/2
. All rights reserved.
Rewritten by
Dmitry Ban
. All rights ignored.