Difference between revisions of "DBIsStringMutexLocked"
m (1 revision imported) |
1>Admin |
||
Line 4: | Line 4: | ||
|caption=Серверные функции | |caption=Серверные функции | ||
|type=1 | |type=1 | ||
− | |status= | + | |status=2 |
|db=1 | |db=1 | ||
|exception=Невозможно превратить в строку | |exception=Невозможно превратить в строку | ||
Line 21: | Line 21: | ||
==== Аргументы ==== | ==== Аргументы ==== | ||
* <code>''<Имя семафора (STRING)>''</code> - Имя серверного семафора, который необходимо проверить | * <code>''<Имя семафора (STRING)>''</code> - Имя серверного семафора, который необходимо проверить | ||
− | * <code>''<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>''</code> - {{ByRef}} {{Optional}} Переменные, получающие информацию о том, кто, где и в какое время произвел блокировку семафора, если он заблокирован. | + | * <code>''<Заблокировано пользователем (STRING)>,<Заблокировано на машине (STRING)>,<Время блокировки (DATE)>''</code> - {{ByRef}} {{Optional}} Переменные, получающие информацию о том, кто, где и в какое время произвел блокировку семафора, если он заблокирован. Если семафор заблокирован в текущем потоке, либо не заблокирован, значение этих переменных не изменяется. |
==== Возвращаемое значение ==== | ==== Возвращаемое значение ==== | ||
− | Возвращает 1, | + | Возвращает число, которое может принимать следующие значения: |
+ | * ''0'' -- семафор не заблокирован на сервере | ||
+ | * ''1'' -- семафор заблокирован из текущего потока (т.е., текущий поток является владельцем семафора). | ||
+ | * ''2'' -- семафор заблокирован из какого-либо другого потока, либо из другой сессии. В этом случае будет заполнена информация о пользователе, машине и времени блокировки. | ||
== Примеры == | == Примеры == | ||
<pre> | <pre> | ||
− | //Блок | + | //Блок может использовать для информативной проверки возможности совершить обмен. До начала обмена, однако, |
+ | // правильнее использовать функцию DBLockStringMutex для нахождения пользователя который уже его осуществляет. | ||
ИмяБлок:="Обмен с центральной базой"; | ИмяБлок:="Обмен с центральной базой"; | ||
аПольз:="";аМаш:="";аДата:=""; | аПольз:="";аМаш:="";аДата:=""; | ||
− | If DBIsStringMutexLocked(ИмяБлок,аПольз,аМаш,аДата) Then | + | If DBIsStringMutexLocked(ИмяБлок,аПольз,аМаш,аДата)=2 Then |
− | Message("Обмен | + | Message("Обмен с центральной базой уже выполняет пользователь "+аПольз+" ("+аМаш+"), начало "+аДата+"! Дождитесь окончания предыдущего обмена!","!"); |
Else | Else | ||
Message("В данный момент обмен с центральной базой не выполняется!"); | Message("В данный момент обмен с центральной базой не выполняется!"); | ||
EndIf; | EndIf; | ||
</pre> | </pre> |
Revision as of 10:53, 21 March 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;