DBIsStringMutexLocked
Revision as of 10:53, 21 March 2021 by 1>Admin
DBIsStringMutexLocked (Серверные функции) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция проверяет, заблокирован ли именованный серверный семафор, и возвращает данные пользователя, который его заблокировал при необходимости. См. также функцию DBLockStringMutex.
Синтаксис
DBIsStringMutexLocked(<Имя семафора (STRING)>,<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>):<Результат (INT)>
Аргументы
<Имя семафора (STRING)>
- Имя серверного семафора, который необходимо проверить<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>
- (возможен аргумент-переменная (ByRef)) (необязательный аргумент) Переменные, получающие информацию о том, кто, где и в какое время произвел блокировку семафора, если он заблокирован. Если семафор заблокирован в текущем потоке, либо не заблокирован, значение этих переменных не изменяется.
Возвращаемое значение
Возвращает число, которое может принимать следующие значения:
- 0 -- семафор не заблокирован на сервере
- 1 -- семафор заблокирован из текущего потока (т.е., текущий поток является владельцем семафора).
- 2 -- семафор заблокирован из какого-либо другого потока, либо из другой сессии. В этом случае будет заполнена информация о пользователе, машине и времени блокировки.
Примеры
//Блок может использовать для информативной проверки возможности совершить обмен. До начала обмена, однако, // правильнее использовать функцию DBLockStringMutex для нахождения пользователя который уже его осуществляет. ИмяБлок:="Обмен с центральной базой"; аПольз:="";аМаш:="";аДата:=""; If DBIsStringMutexLocked(ИмяБлок,аПольз,аМаш,аДата)=2 Then Message("Обмен с центральной базой уже выполняет пользователь "+аПольз+" ("+аМаш+"), начало "+аДата+"! Дождитесь окончания предыдущего обмена!","!"); Else Message("В данный момент обмен с центральной базой не выполняется!"); EndIf;