Difference between revisions of "DBIsStringMutexLocked"
1>Admin |
m (1 revision imported) |
(No difference)
| |
Latest revision as of 15:16, 16 April 2021
| 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;