18.01.2020, 05:38 [+3 UTC]
в нашей команде: 4 150 чел. | участники онлайн: 3 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.80 (15.01.2020)
JS-v.1.35 | CSS-v.3.36

Общие новости:
06.01.2020, 22:45

Форум:
13.01.2020, 16:40

Последний вопрос:
18.01.2020, 02:32
Всего: 151434

Последний ответ:
17.01.2020, 19:30
Всего: 259652

Последняя рассылка:
18.01.2020, 05:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
21.10.2009, 18:12 »
Гуревич Александр Львович
Большое Вам спасибо за рекомендованную программу. Общими усилиями проблема успешно решена. [вопрос № 173416, ответ № 255579]
16.04.2013, 12:15 »
Киселёва Алёна aka Verena
Спасибо за ответ! [вопрос № 187280, ответ № 272199]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 973
solowey
Статус: Специалист
Рейтинг: 274
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 270

Перейти к консультации №:
 

Консультация онлайн # 72300
Раздел: • Assembler
Автор вопроса: kool
Отправлена: 23.01.2007, 19:38
Поступило ответов: 4

Подскажите плиз как решить такую задачу.
Имеется два компьютера в сети, на каждом из них
выполняется по одному процессу, которые используют общий
для этих двух процессов файл. Необходимо
синхронизировать использование этого файла
этими двумя процессами. Т.е. если один процесс
работает с этим файлом другой - ожидает пока
первый процесс закончит свою работу.
Как это реализовать? Хотя бы основные принципы!
Спасибо за ответы!

Состояние: Консультация закрыта

Ответ # 138588 от ramok

Здравствуйте, kool!

самое просто это использовать файлов-флагов.
например у вас файл называется share.dat.
первый процесс пытается создать файл share.dat.lock нулевого размера, если ему это удается, то он начинает работать с файлом, и когда заканчивает то стирает этот файл.
процесс два тоже пытается создать файл share.dat.lock, но допустим что этот файл уже создан. значит другой процесс сейчас работает над этим файлом. процесс переодически пытается создать лок файл, до тех пор пока ему это не удается. после окончании работы он в свою очередь стирает лок файл.


Консультировал: ramok
Дата отправки: 23.01.2007, 19:49

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 138591 от Евгений Иванов

Здравствуйте, kool!

Используй атрибут доступа. Открывай файл с закрытием доступа, и с проверкой на доступ. Если доступ закрыт, то ждёт по циклу, пока доступ будет разрешён. Когда один комп завершит работу, закрывай файл, тогда второй комп откроет его и т.д.

Насчёт задержек - отдавай процессорное время и проверяй через каждые 500 мс, взгляни на прерывание int 21 и её функции 83h и др.

Удачи!


Консультировал: Евгений Иванов
Дата отправки: 23.01.2007, 19:52

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 138735 от Лысков Игорь Витальевич (Старший модератор)

Здравствуйте, kool!
Хочу предложить взглянуть на проблему по-другому.
Если один процесс является основным и является хозяином файла.
Тогда можно организовать систему по принципу клиент-сервер.
В таком случае основной процесс монопольно работает с файлом сам,
плюс выполняет запросы от клиентов.
Клиент-сервер можно организовать, например, при помощи пайпов или сокетов


Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 24.01.2007, 11:23

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Здравствуйте, kool!
если Вы используете CreateFile: Вам нужно переменную dwShareMode обнулить
файл открывается блокированным для других процессов до закрытия файла
если файл уже открыт фунция дает ошибку.
если Вы используете OpenFile: Вам нужно переменной uStyle присвоить значение
OF_SHARE_EXCLUSIVE
Удачи!


Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 25.01.2007, 11:41

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

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

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15660 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.80 от 15.01.2020
Версия JS: 1.35 | Версия CSS: 3.36