RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Установка атрибутов файлов из Rexx


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Improver
To : Aleksey Tarasow
Subj : Установка атрибутов файлов из Rexx

> > > Такой вопрос, а есть иной способ установить флаги файлов из Rexx, кроме SysFileTree и attrib?
> > DLLю внешнюю написать с нужной функцией?
> > Hу или на хоббесе пошаpиться - может кто уже написал.
> Изменю вопрос. Опишу ситуацию: есть файлы, в которые могут писать одновременно несколько процессов. Во избежании, было принято решение попытаться их развести. Для чего каждый процесс начал "лочить" файл с которым работает. Для это устанавливается один из атрибутов файлов. Другие процессы проверяют установку этого атрибута, и если он установлен, ждут пока он снимется. Выглядит это так:
> call SysFileTree FileActual, 'FileActual','FN','*****'
> if FileActual.0>0 then do
> do until FileActual.0>0
> call SysFileTree FileActual, 'FileActual','FN','**-*-'
> if FileActual.0>0 then 'attrib +h "'FileActual'" > nul'
> else call SysSleep Random(1,5)/10
> end /* until FileSearch.0>0 */
> end /* if FileActual.0>0 */
> и в конце работы "'attrib -h -s "'FileActual'" > nul'"
>
> При работе без "attrib", обработка 15 файлов занимает чуть больше 1 сек. В текущем виде почти 7 сек. Рост значительный, а обрабатывать привидеться более 400 файлов...
>
> Вопрос: может кто нибудь предложить иной алгоритм развода файлов в разные стороны?

Предлагаю сбрасывать полные имена залоченых файлов в очередь, например в RXQUEUE, а при завершении процесса удалять их оттуда... Или наоборот, сразу сбросить в очередь полный список всех файлов и каждый процесс будет удалять оттуда строки по мере их обработки. В любом случае, отсутствие дополнительных дисковых операций должно, по идее, дать прирост в скорости обработки.


Sun 11 Jan 2015 17:00 Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:34.0) Gecko/2010010




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.