AsyncReaderWriterLock Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Blokada nieblokująca, która umożliwia współbieżny dostęp, wyłączny dostęp lub współbieżność z możliwościami uaktualniania w celu uzyskania wyłącznego dostępu.
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
- Dziedziczenie
-
AsyncReaderWriterLock
- Pochodne
- Implementuje
Uwagi
Musimy użyć niestandardowej oczekiwanej zamiast po prostu zwracać zadanie{LockReleaser}, ponieważ musimy ustawić dane CallContext w kontekście osoby odbierającej blokadę, co wymaga wykonania kodu na początku kontynuacji (niezależnie od tego, czy dajemy, czy nie).
Konstruktory
AsyncReaderWriterLock() |
Inicjuje nowe wystąpienie klasy AsyncReaderWriterLock. |
AsyncReaderWriterLock(Boolean) |
Inicjuje nowe wystąpienie klasy AsyncReaderWriterLock. |
AsyncReaderWriterLock(JoinableTaskContext, Boolean) |
Inicjuje nowe wystąpienie klasy AsyncReaderWriterLock. |
Właściwości
AmbientLock |
Pobiera blokadę przechowywaną przez kontekst wykonywania obiektu wywołującego. |
CanCurrentThreadHoldActiveLock |
Pobiera wartość wskazującą, czy bieżący wątek może przechowywać aktywną blokadę. |
CaptureDiagnostics |
Pobiera lub ustawia wartość wskazującą, czy należy wydać dodatkowe zasoby w celu zbierania informacji, które byłyby przydatne w diagnozowaniu zakleszczeń itp. |
Completion |
Pobiera zadanie, którego ukończenie sygnalizuje, że ta blokada nie będzie już wystawiać blokad. |
DeadlockCheckTimeout |
Pobiera opóźnienie czasu, aby sprawdzić, czy oczekująca blokada zapisywania i czytnik blokuje zakleszczenie. |
IsAnyLockHeld |
Pobiera wartość wskazującą, czy jakikolwiek rodzaj blokady jest przechowywany przez obiekt wywołujący i może być natychmiast używany przy użyciu kontekstu obiektu wywołującego. |
IsAnyPassiveLockHeld |
Pobiera wartość wskazującą, czy jakikolwiek rodzaj blokady jest przechowywany przez obiekt wywołujący bez względu na zgodność blokady kontekstu obiektu wywołującego. |
IsPassiveReadLockHeld |
Pobiera wartość wskazującą, czy blokada odczytu jest przechowywana przez obiekt wywołujący bez względu na zgodność blokady kontekstu obiektu wywołującego. |
IsPassiveUpgradeableReadLockHeld |
Pobiera wartość wskazującą, czy blokada odczytu z możliwością uaktualnienia jest przechowywana przez obiekt wywołujący bez względu na zgodność blokady kontekstu obiektu wywołującego. |
IsPassiveWriteLockHeld |
Pobiera wartość wskazującą, czy blokada zapisu jest przechowywana przez obiekt wywołujący bez względu na zgodność blokady kontekstu obiektu wywołującego. |
IsReadLockHeld |
Pobiera wartość wskazującą, czy obiekt wywołujący przechowuje blokadę odczytu. |
IsUnsupportedSynchronizationContext |
Pobiera wartość wskazującą, czy bieżący element SynchronizationContext jest taki, który nie jest obsługiwany przez tę blokadę. |
IsUpgradeableReadLockHeld |
Pobiera wartość wskazującą, czy obiekt wywołujący przechowuje blokadę odczytu z możliwością uaktualnienia. |
IsWriteLockHeld |
Pobiera wartość wskazującą, czy obiekt wywołujący przechowuje blokadę zapisu. |
NoMessagePumpSynchronizationContext |
SynchronizationContext Pobiera, który po zastosowaniu pomija wszelkie pompy komunikatów, które mogą być uruchamiane podczas synchronicznych bloków wątku wywołującego. |
SyncObject |
Pobiera obiekt używany do synchronizowania dostępu do pól tego wystąpienia. |
Metody
Complete() |
Powoduje odrzucenie nowych żądań blokad najwyższego poziomu, a Completion zadanie przejścia do stanu ukończonego po zwolnieniu wszystkich wystawionych blokad. |
Dispose() |
Blokada nieblokująca, która umożliwia współbieżny dostęp, wyłączny dostęp lub współbieżność z możliwościami uaktualniania w celu uzyskania wyłącznego dostępu. |
Dispose(Boolean) |
Usuwa zarządzane i niezarządzane zasoby przechowywane przez to wystąpienie. |
GetAggregateLockFlags() |
Zwraca agregację flag blokady dla wszystkich zagnieżdżonych blokad. |
GetHangReport() |
Współtworzy dane raportu zawieszenia. |
GetTaskSchedulerForReadLockRequest() |
Pobierz harmonogram zadań, aby wykonać kontynuację po uzyskaniu blokady. AsyncReaderWriterLock używa specjalnej SynchronizationContext funkcji do obsługi blokad wyłącznych i zignoruje podany harmonogram zadań, więc jest on używany tylko w scenariuszu blokady odczytu. Ta metoda jest wywoływana w kontekście wykonywania, aby czekać na blokadę odczytu, aby mogła być pobierana TaskScheduler na podstawie bieżącego kontekstu wykonywania. Uwaga: harmonogram zadań jest używany tylko wtedy, gdy blokada zostanie wydana później. Jeśli blokada zostanie wystawiona natychmiast po CanCurrentThreadHoldActiveLock zwracaniu wartości true, zostanie zignorowana. |
HideLocks() |
Zapobiega używaniu lub widoczności blokad obiektu wywołującego, dopóki zwrócona wartość nie zostanie usunięta. |
LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle) |
Sprawdza, czy zagregowane flagi ze wszystkich blokad w stosie blokady spełniają określone flagi. |
OnBeforeExclusiveLockReleasedAsync() |
Wyzwolony, gdy ostatnia blokada zapisu ma zostać zwolniona. |
OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle) |
Wyzwolony po zwolnieniu blokady. |
OnBeforeWriteLockReleased(Func<Task>) |
Rejestruje wywołanie zwrotne, które ma być wywoływane, gdy blokada zapisu przechowywana przez obiekt wywołujący ma zostać ostatecznie zwolniona (najbardziej zewnętrzna blokada zapisu). |
OnCriticalFailure(Exception) |
Wywoływane po wykryciu błędu wewnętrznego lub nielegalnego wzorca użycia, który wskazuje na poważną wadę, która powinna zostać natychmiast zgłoszona do aplikacji i/lub obniżyć proces, aby uniknąć zawieszenia lub uszkodzenia danych. |
OnCriticalFailure(String) |
Wywoływane po wykryciu błędu wewnętrznego lub nielegalnego wzorca użycia, który wskazuje na poważną wadę, która powinna zostać natychmiast zgłoszona do aplikacji i/lub obniżyć proces, aby uniknąć zawieszenia lub uszkodzenia danych. |
OnExclusiveLockReleasedAsync() |
Wywoływane po zwolnieniu blokady wyłącznej, ale zanim ktoś ma szansę wejść do blokady. |
OnUpgradeableReadLockReleased() |
Wywoływane po zwolnieniu blokady odczytu z możliwością uaktualnienia najwyższego poziomu, nie pozostawiając pozostałej blokady (zapisu). |
ReadLockAsync(CancellationToken) |
Uzyskuje blokadę odczytu, asynchronicznie oczekując na blokadę, jeśli nie jest natychmiast dostępna. |
UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Uzyskuje blokadę odczytu, asynchronicznie oczekując na blokadę, jeśli nie jest natychmiast dostępna. |
UpgradeableReadLockAsync(CancellationToken) |
Uzyskuje blokadę odczytu z możliwością uaktualnienia, asynchronicznie oczekując na blokadę, jeśli nie jest natychmiast dostępna. |
WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Uzyskuje blokadę odczytu, asynchronicznie oczekując na blokadę, jeśli nie jest natychmiast dostępna. |
WriteLockAsync(CancellationToken) |
Uzyskuje blokadę odczytu, asynchronicznie oczekując na blokadę, jeśli nie jest natychmiast dostępna. |
Jawne implementacje interfejsu
IHangReportContributor.GetHangReport() |
Współtworzy dane raportu zawieszenia. |
Dotyczy
Bezpieczeństwo wątkowe
Ten typ jest bezpieczny wątkowo dla wszystkich elementów członkowskich.