FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9265
Вход
"Виртуальные" многопользовательские блокировки (семафоры)

Семафорные логические блокировки позволяют разделять доступ группам пользователей к любым объектам, которым можно присвоить идентификатор внутри группы. Объектами могут выступать таблицы, записи, директории, группы файлов и любые абстрактные объекты. На один объект может быть наложено НЕСКОЛЬКО Shared-блокировок или одна Exlusive, при этом блокировки "знают" имя своего хозяина и момент блокирования. Такие нефизические блокировки организуются в виде независимого механизма во внешнем семафорном списке.


 
Прислал: Дм.Баянов   Категория: Работа с данными


"Виртуальные"многопользовательские блокировки (семафоры)

Примерами типовых задач для таких блокировок являются:
1) Разделение доступа к группе файлов в директории - захват и манипуляция с группой любых файлов разного типа, при этом остальные пользователи не должны иметь доступ к этой группе файлов на время сеанса.
2) Групповая блокировка для записи - группа пользователей редактирует одну запись, блокируя ее в режиме Shared, при этом для удаления эта запись недоступна.

Блокировки организуются в виде внешней таблицы семафорных блокировок, в которую заносится запись о блокировке с информацией об :
1) идентификаторе объекта
2) имени пользователя
3) режиме блокировки (монопольная или разделяемая)
4) времени и дате установки блокировки

При аварийном завершеннии приложения, выставившего блокировку, она автоматически дезактивируется в семафоре. Освободившиеся записи используются для других блокировок, оптимизируя механизм от разбухания таблицы и необходимости ее упаковки.
Логические блокировки позволяют гибко отрегулировать множественный доступ к нестандартным объектам, не производя ФИЗИЧЕСКУЮ блокировку стандартных объектов БД (таблиц и записей). Для полной и правильной работы с записями требуется использование в них уникальных первичных ключей.
В приложенном файле slock.prg находятся набор автономных функций (SemLock, SemUnlock и SemLocked) с тестовым примером, иллюстрирующие многопользовательские блокировки для абстрактных объектов. Для проверки необходимо откомпилировать файл и запустить его несколько раз (каждая сессия будет имитировать пользователя).

 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (4.913) Вложение [18.46]kb
Дополнения пользователей
"Виртуальные" многопользовательские блокировки (семафоры)
[+][?]
[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика