AsyncReaderWriterLock Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Блокировка без блокировки, которая разрешает одновременный доступ, монопольный доступ или одновременный с возможностью обновления для монопольного доступа.
public ref class AsyncReaderWriterLock : IDisposable, Microsoft::VisualStudio::Threading::IHangReportContributor
public class AsyncReaderWriterLock : IDisposable, Microsoft.VisualStudio.Threading.IHangReportContributor
type AsyncReaderWriterLock = class
interface IHangReportContributor
interface IDisposable
Public Class AsyncReaderWriterLock
Implements IDisposable, IHangReportContributor
- Наследование
-
AsyncReaderWriterLock
- Производный
- Реализации
Комментарии
Мы должны использовать настраиваемый ожидаемый объект, а не просто возвращать задачу{LockReleaser}, так как нам нужно задать данные CallContext в контексте лица, получающего блокировку, что требует, чтобы мы получили код в начале продолжения (если мы получаем или нет).
Конструкторы
| Имя | Описание |
|---|---|
| AsyncReaderWriterLock() |
Инициализирует новый экземпляр класса AsyncReaderWriterLock. |
| AsyncReaderWriterLock(Boolean) |
Инициализирует новый экземпляр класса AsyncReaderWriterLock. |
| AsyncReaderWriterLock(JoinableTaskContext, Boolean) |
Инициализирует новый экземпляр класса AsyncReaderWriterLock. |
Свойства
| Имя | Описание |
|---|---|
| AmbientLock |
Возвращает блокировку, удерживаемую контекстом выполнения вызывающего объекта. |
| CanCurrentThreadHoldActiveLock |
Возвращает значение, указывающее, разрешено ли текущему потоку хранить активную блокировку. |
| CaptureDiagnostics |
Возвращает или задает значение, указывающее, следует ли тратить дополнительные ресурсы для сбора информации, полезной для диагностики взаимоблокировок и т. д. |
| Completion |
Получает задачу, которая сигнализирует о том, что эта блокировка больше не выдает блокировки. |
| DeadlockCheckTimeout |
Возвращает задержку времени, чтобы проверить, формируется ли блокировка отложенного средства записи и блокировки чтения. |
| IsAnyLockHeld |
Возвращает значение, указывающее, хранится ли любая блокировка вызывающим объектом и может быть немедленно использована с учетом контекста вызывающего объекта. |
| IsAnyPassiveLockHeld |
Возвращает значение, указывающее, хранится ли любая блокировка вызывающим объектом без учета совместимости контекста вызывающего объекта. |
| IsPassiveReadLockHeld |
Возвращает значение, указывающее, хранится ли блокировка чтения вызывающим объектом без учета совместимости блокировки контекста вызывающего объекта. |
| IsPassiveUpgradeableReadLockHeld |
Возвращает значение, указывающее, хранится ли обновляемая блокировка чтения вызывающим объектом без учета совместимости блокировки контекста вызывающего объекта. |
| IsPassiveWriteLockHeld |
Возвращает значение, указывающее, удерживается ли вызывающим объектом блокировка без учета совместимости блокировки контекста вызывающего объекта. |
| IsReadLockHeld |
Возвращает значение, указывающее, содержит ли вызывающий объект блокировку чтения. |
| IsUnsupportedSynchronizationContext |
Возвращает значение, указывающее, является ли текущий элемент SynchronizationContext, который не поддерживается этой блокировкой. |
| IsUpgradeableReadLockHeld |
Возвращает значение, указывающее, содержит ли вызывающий объект обновляемую блокировку чтения. |
| IsWriteLockHeld |
Возвращает значение, указывающее, содержит ли вызывающий объект блокировку записи. |
| NoMessagePumpSynchronizationContext |
SynchronizationContext Возвращает значение, которое при применении подавляет любой насос сообщений, который может выполняться во время синхронных блоков вызывающего потока. |
| SyncObject |
Возвращает объект, используемый для синхронизации доступа к полям этого экземпляра. |
Методы
| Имя | Описание |
|---|---|
| Complete() |
Вызывает отклонение новых запросов на блокировку верхнего уровня, а Completion задача переходить к завершенному состоянию после освобождения всех выданных блокировок. |
| Dispose() |
Блокировка без блокировки, которая разрешает одновременный доступ, монопольный доступ или одновременный с возможностью обновления для монопольного доступа. |
| Dispose(Boolean) |
Удаляет управляемые и неуправляемые ресурсы, удерживаемые этим экземпляром. |
| GetAggregateLockFlags() |
Возвращает агрегат флагов блокировки для всех вложенных блокировок. |
| GetHangReport() |
Предоставляет данные для отчета о зависаниях. |
| GetTaskSchedulerForReadLockRequest() |
Получите планировщик задач для выполнения продолжения при получении блокировки. AsyncReaderWriterLock использует специальное средство SynchronizationContext для обработки монопольных блокировок и будет игнорировать планировщик задач, поэтому он используется только в сценарии блокировки чтения. Этот метод вызывается в контексте выполнения, чтобы дождаться блокировки чтения, поэтому он может забрать TaskScheduler в зависимости от текущего контекста выполнения. Примечание. Планировщик задач используется только после выдачи блокировки. Если блокировка выдается немедленно при CanCurrentThreadHoldActiveLock возврате true, она будет игнорироваться. |
| HideLocks() |
Запрещает использование или видимость блокировки вызывающего объекта, пока возвращаемое значение не будет удалено. |
| LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle) |
Проверяет, соответствуют ли агрегированные флаги из всех блокировок в стеке блокировки указанным флагам. |
| OnBeforeExclusiveLockReleasedAsync() |
Запускается, когда последняя блокировка записи будет выпущена. |
| OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle) |
Запускается при освобождении любой блокировки. |
| OnBeforeWriteLockReleased(Func<Task>) |
Регистрирует обратный вызов, который будет вызываться, когда блокировка записи, удерживаемая вызывающим оператором, в конечном счете будет освобождена (внешняя блокировка записи). |
| OnCriticalFailure(Exception) |
Вызывается, когда блокировка обнаруживает внутреннюю ошибку или шаблон незаконного использования, указывающий на серьезный недостаток, который следует немедленно сообщить приложению и /или привести процесс, чтобы избежать зависания или повреждения данных. |
| OnCriticalFailure(String) |
Вызывается, когда блокировка обнаруживает внутреннюю ошибку или шаблон незаконного использования, указывающий на серьезный недостаток, который следует немедленно сообщить приложению и /или привести процесс, чтобы избежать зависания или повреждения данных. |
| OnExclusiveLockReleasedAsync() |
Вызывается после освобождения эксклюзивной блокировки, но прежде чем кто-либо может войти в блокировку. |
| OnUpgradeableReadLockReleased() |
Вызывается при освобождении блокировки чтения верхнего уровня, не оставляя оставшейся (записи) блокировку. |
| ReadLockAsync(CancellationToken) |
Получает блокировку чтения, асинхронно ожидая блокировки, если она не сразу доступна. |
| UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Получает обновляемую блокировку чтения, асинхронно ожидая блокировки, если она не сразу доступна. |
| UpgradeableReadLockAsync(CancellationToken) |
Получает обновляемую блокировку чтения, асинхронно ожидая блокировки, если она не сразу доступна. |
| WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Получает блокировку записи, асинхронно ожидая блокировки, если она не сразу доступна. |
| WriteLockAsync(CancellationToken) |
Получает блокировку записи, асинхронно ожидая блокировки, если она не сразу доступна. |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| IHangReportContributor.GetHangReport() |
Предоставляет данные для отчета о зависаниях. |
Применяется к
Потокобезопасность
Этот тип является потокобезопасной для всех членов.