"Виртуальные"многопользовательские блокировки (семафоры)
Примерами типовых задач для таких блокировок являются:
1) Разделение доступа к группе файлов в директории - захват и манипуляция с группой любых файлов разного типа, при этом остальные пользователи не должны иметь доступ к этой группе файлов на время сеанса.
2) Групповая блокировка для записи - группа пользователей редактирует одну запись, блокируя ее в режиме Shared, при этом для удаления эта запись недоступна.
Блокировки организуются в виде внешней таблицы семафорных блокировок, в которую заносится запись о блокировке с информацией об :
1) идентификаторе объекта
2) имени пользователя
3) режиме блокировки (монопольная или разделяемая)
4) времени и дате установки блокировки
При аварийном завершеннии приложения, выставившего блокировку, она автоматически дезактивируется в семафоре. Освободившиеся записи используются для других блокировок, оптимизируя механизм от разбухания таблицы и необходимости ее упаковки.
Логические блокировки позволяют гибко отрегулировать множественный доступ к нестандартным объектам, не производя ФИЗИЧЕСКУЮ блокировку стандартных объектов БД (таблиц и записей). Для полной и правильной работы с записями требуется использование в них уникальных первичных ключей.
В приложенном файле slock.prg находятся набор автономных функций (SemLock, SemUnlock и SemLocked) с тестовым примером, иллюстрирующие многопользовательские блокировки для абстрактных объектов. Для проверки необходимо откомпилировать файл и запустить его несколько раз (каждая сессия будет имитировать пользователя).
Вложенные файлы
# |
Название |
Тип файла |
Размер |
---|---|---|---|
1 | 184slock | .zip | 18,46 КБ |