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 может быть повреждено.