Hare.ru @ Коллективный разум / Hare.ru @ Дикое место |
Архив hare.ru | |||
Мысли, конвертированные в текст | ||||
Собственные руки TMБлокировка() нам поможет.BigHarry (где-то в 2001) Иногда бывает нужно обеспечить выполнение некоторых обработок в «квазимонопольном» режиме, т.е. таким образом, чтобы обработка в один момент времени выполнялась только в одной сессии (база данных, разумеется, сетевая).Например, это может быть загрузка документов или справочников из внешних источников, какие-то административные работы, «чистка» базы или что-то подобное. В любом случае, открывать базу в монопольном режиме ради выполнения одной обработки очень неудобно и не всегда возможно. Следовательно, нужен какой-то механизм, позволяющий распознавать и блокировать ситуации одновременного доступа к обработке. Иными словами, нужен семафор. Первое, что приходит на ум использовать в качестве семафора константу. Но это плохое решение. Если клиент, установивший семафор, вдруг по какой-то причине отвалится (банальный сбой питания или «коврик выполнил недопустимую операцию и будет свёрнут»), то семафор так и останется поднятым. Возвращать его в нулевое состояние придётся руками, а это сводит на нет всю идею семафора и подниматься, и опускаться он должен на полном автомате. По этой же причине нельзя использовать в качестве семафора наличие/отсутствие каких-то файлов и т.п. Возникает вопрос а нельзя ли использовать для механизма блокировок и семафоров какие-либо штатные возможности V7? Можно. В частности, отлично подойдёт самый обыкновенный справочник. Окончательное решение выглядит так:
Перем _лок; // переменная модуля Такой механизм будет работать в любой ситуации поскольку он построен на штатном механизме шаринга и блокировок. Даже при аварийном завершении сессии семафор будет корректно возвращён в исходное (нулевое) состояние. В принципе, механизм блокировок можно использовать не только для контроля за доступом к отчётам и обработкам. С его помощью, например, можно программно получать список пользователей, гарантированно работающих в настоящий момент с базой данных, и делать другие интересные вещи |
Партнеры: Также может быть интересно: Канал Россия 1 на http://spbtvonline.ru/ |
|||
Сайт поддерживается за счет партнеров: | ||||
:::... Сайт содержит архив двух версий hare.ru | Карта сайта |