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

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

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

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

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

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

Автор: Дм.Баянов

Автор публикации

не в сети 8 месяцев

admin

0
Комментарии: 0Публикации: 107Регистрация: 10-12-2000
0
Вложенные файлы
#
Тип файла
Размер
Название
1 .zip 18,46 КБ 184slock
Оставить комментарий
Авторизация
*
*
Генерация пароля