SpinLock.TryEnter Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Пытается получить блокировку надежным способом, то есть даже если в вызове метода возникает исключение, lockTaken
можно надежно изучить и определить, была ли получена блокировка.
Перегрузки
TryEnter(Boolean) |
Пытается получить блокировку надежным способом, то есть даже если в вызове метода возникает исключение, |
TryEnter(Int32, Boolean) |
Пытается получить блокировку надежным способом, то есть даже если в вызове метода возникает исключение, |
TryEnter(TimeSpan, Boolean) |
Пытается получить блокировку надежным способом, то есть даже если в вызове метода возникает исключение, |
TryEnter(Boolean)
- Исходный код:
- SpinLock.cs
- Исходный код:
- SpinLock.cs
- Исходный код:
- SpinLock.cs
Пытается получить блокировку надежным способом, то есть даже если в вызове метода возникает исключение, lockTaken
можно надежно изучить и определить, была ли получена блокировка.
public:
void TryEnter(bool % lockTaken);
public void TryEnter (ref bool lockTaken);
member this.TryEnter : bool -> unit
Public Sub TryEnter (ByRef lockTaken As Boolean)
Параметры
- lockTaken
- Boolean
Значение true, если блокировка получена; в противном случае — значение false. Перед вызовом этого метода необходимо инициализировать параметр lockTaken
.
Исключения
Аргумент lockTaken
должен быть инициализирован в false до вызова TryEnter.
Включено отслеживание владения потоками, и текущий поток уже получил эту блокировку.
Комментарии
В отличие от Enter, TryEnter не будет блокировать ожидание блокировки. Если блокировка недоступна при вызове TryEnter, она немедленно вернется без дальнейшего вращения.
См. также раздел
- Спин
- Практическое руководство. SpinLock и низкоуровневая синхронизация
- Практическое руководство. Включение режима отслеживания потоков в SpinLock
Применяется к
TryEnter(Int32, Boolean)
- Исходный код:
- SpinLock.cs
- Исходный код:
- SpinLock.cs
- Исходный код:
- SpinLock.cs
Пытается получить блокировку надежным способом, то есть даже если в вызове метода возникает исключение, lockTaken
можно надежно изучить и определить, была ли получена блокировка.
public:
void TryEnter(int millisecondsTimeout, bool % lockTaken);
public void TryEnter (int millisecondsTimeout, ref bool lockTaken);
member this.TryEnter : int * bool -> unit
Public Sub TryEnter (millisecondsTimeout As Integer, ByRef lockTaken As Boolean)
Параметры
- millisecondsTimeout
- Int32
Время ожидания в миллисекундах или функция Infinite (-1) в случае неограниченного времени ожидания.
- lockTaken
- Boolean
Значение true, если блокировка получена; в противном случае — значение false. Перед вызовом этого метода необходимо инициализировать параметр lockTaken
.
Исключения
Параметр millisecondsTimeout
является отрицательным числом, отличным от –1, что означает бесконечное время ожидания.
Аргумент lockTaken
должен быть инициализирован в false до вызова TryEnter.
Включено отслеживание владения потоками, и текущий поток уже получил эту блокировку.
Комментарии
В отличие от Enter, TryEnter не будет блокировать бесконечное ожидание блокировки. Она будет блокироваться до тех пор, пока не будет доступна блокировка millisecondsTimeout
или пока не истечет срок действия.
См. также раздел
- Спин
- Практическое руководство. SpinLock и низкоуровневая синхронизация
- Практическое руководство. Включение режима отслеживания потоков в SpinLock
Применяется к
TryEnter(TimeSpan, Boolean)
- Исходный код:
- SpinLock.cs
- Исходный код:
- SpinLock.cs
- Исходный код:
- SpinLock.cs
Пытается получить блокировку надежным способом, то есть даже если в вызове метода возникает исключение, lockTaken
можно надежно изучить и определить, была ли получена блокировка.
public:
void TryEnter(TimeSpan timeout, bool % lockTaken);
public void TryEnter (TimeSpan timeout, ref bool lockTaken);
member this.TryEnter : TimeSpan * bool -> unit
Public Sub TryEnter (timeout As TimeSpan, ByRef lockTaken As Boolean)
Параметры
- timeout
- TimeSpan
Период TimeSpan, представляющий время ожидания в миллисекундах, или период TimeSpan, представляющий -1 миллисекунду для неограниченного ожидания.
- lockTaken
- Boolean
Значение true, если блокировка получена; в противном случае — значение false. Перед вызовом этого метода необходимо инициализировать параметр lockTaken
.
Исключения
timeout
— отрицательное число, отличное от -1 миллисекунда, которое представляет бесконечное время ожидания или время ожидания больше, чем Int32.MaxValue в миллисекундах.
Аргумент lockTaken
должен быть инициализирован в false до вызова TryEnter.
Включено отслеживание владения потоками, и текущий поток уже получил эту блокировку.
Комментарии
В отличие от Enter, TryEnter не будет блокировать бесконечное ожидание блокировки. Она будет блокироваться до тех пор, пока не будет доступна блокировка timeout
или пока не истечет срок действия.
См. также раздел
- Спин
- Практическое руководство. SpinLock и низкоуровневая синхронизация
- Практическое руководство. Включение режима отслеживания потоков в SpinLock