SpinLock.Enter(Boolean) Метод

Определение

Получает блокировку надежным способом, то есть даже если в вызове метода возникает исключение, lockTaken можно надежно изучить и определить, была ли получена блокировка.

public:
 void Enter(bool % lockTaken);
public void Enter (ref bool lockTaken);
member this.Enter : bool -> unit
Public Sub Enter (ByRef lockTaken As Boolean)

Параметры

lockTaken
Boolean

Значение true, если блокировка получена; в противном случае — значение false. Перед вызовом этого метода необходимо инициализировать параметр lockTaken.

Исключения

Аргумент lockTaken должен быть инициализирован в false до вызова Enter.

Включено отслеживание владения потоками, и текущий поток уже получил эту блокировку.

Комментарии

SpinLock — это неотразрывная блокировка, то есть, если поток удерживает блокировку, он не может снова войти в блокировку. Если отслеживание владения потоком включено (доступно ли оно через IsThreadOwnerTrackingEnabled), то при попытке повторного входа потока в блокировку он уже удерживает исключение. Однако если отслеживание владения потоком отключено, попытка войти в уже удерживаемую блокировку приведет к взаимоблокировке.

При вызове Exit без предварительного вызова Enter внутреннего состояния SpinLock может быть повреждено.

Применяется к

См. также раздел