LockCount

From SunFlurry wiki
Jump to: navigation, search
  LockCount (Блокировка объектов)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Визуальность:Нет

Функция позволяет получить количество вложенных блокировок объекта (осуществленных с помощью функции LockObject или системой) даже если объект не удерживается текущим потоком (таким образом ее можно также использовать, как индикатор того, что объект заблокирован другим потоком, если известно, что текущий поток его не блокировал, однако, нужно понимать, что объекты, могут автоматически блокироваться системой на время вызова функций, вероятность обнаружить такую блокировку может быть высока, если объект, используется в потоке, который выполняет какую-то работу в данный момент). Кроме того, необходимо понимать, что поток обычно использует один объект блокировки для всех объектов потока, это значит, что если другой объект этого потока был заблокирован, функция покажет наличие блокировки, несмотря на то, что блокировке подвергался не текущий объект. Также нужно понимать, что блокировка осуществима только для сложных объектов, для простых объектов, типа числа, функция всегда будет возвращать ноль.

Синтаксис

LockCount(<Аргумент>):<Количество вложенных блокировок (INT)>

Аргументы

  • <Аргумент> - Сложный объект, количество вложенных блокировок которого (правильнее: количество вложенных блокировок потока которого) необходимо найти. Использование простых объектов разрешается, но не имеет смысла.

Возвращаемое значение

Возвращает числовое значение.


Примеры

aList:=List.Create();
//Функция возвратит 0
Message(LockCount(aList));

LockObject(aList);
//Функция возвратит 1
Message(LockCount(aList));

UnlockObject(aList
//Функция возвратит 0
Message(LockCount(aList));