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 do 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
| Nazwa | Opis |
|---|---|
| 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
| Nazwa | Opis |
|---|---|
| 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 podczas diagnozowania zakleszczeń itp. |
| Completion |
Pobiera zadanie, którego ukończenie sygnalizuje, że ta blokada nie będzie już wystawiać blokad. |
| DeadlockCheckTimeout |
Pobiera opóźnienie czasu w celu sprawdzenia, czy oczekująca blokada modułu zapisywania i czytnik blokuje zakleszczenie. |
| IsAnyLockHeld |
Pobiera wartość wskazującą, czy jakikolwiek rodzaj blokady jest utrzymywany przez obiekt wywołujący i może być natychmiast używany, biorąc pod uwagę kontekst obiektu wywołującego. |
| IsAnyPassiveLockHeld |
Pobiera wartość wskazującą, czy jakikolwiek rodzaj blokady jest utrzymywany 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żąca wartość SynchronizationContext jest taka, która nie jest obsługiwana 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 |
Pobiera element SynchronizationContext , który po zastosowaniu pomija wszystkie 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
| Nazwa | Opis |
|---|---|
| Complete() |
Powoduje odrzucenie nowych żądań blokowania najwyższego poziomu i Completion przejście zadania do stanu ukończenia 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 do 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 dla 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ń, dlatego jest używany tylko w scenariuszu blokady odczytu. Ta metoda jest wywoływana w kontekście wykonywania, aby czekać na blokadę odczytu, dzięki czemu może 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 jest wystawiana natychmiast po CanCurrentThreadHoldActiveLock zwracaniu wartości true, zostanie ona zignorowana. |
| HideLocks() |
Zapobiega używaniu lub widoczności blokad obiektu wywołującego do momentu usunięcia zwróconej wartości. |
| LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle) |
Sprawdza, czy zagregowane flagi ze wszystkich blokad w stosie blokady spełniają określone flagi. |
| OnBeforeExclusiveLockReleasedAsync() |
Wyzwolony, gdy ma zostać zwolniona ostatnia blokada zapisu. |
| OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle) |
Wyzwolony, gdy jest zwalniana blokada. |
| 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ływana, gdy blokada wykryje błąd wewnętrzny lub nielegalny wzorzec 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ływana, gdy blokada wykryje błąd wewnętrzny lub nielegalny wzorzec 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ływana 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 z możliwością uaktualnienia, 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ę zapisu, asynchronicznie oczekującą na blokadę, jeśli nie jest natychmiast dostępna. |
| WriteLockAsync(CancellationToken) |
Uzyskuje blokadę zapisu, asynchronicznie oczekującą na blokadę, jeśli nie jest natychmiast dostępna. |
Jawne implementacje interfejsu
| Nazwa | Opis |
|---|---|
| IHangReportContributor.GetHangReport() |
Współtworzy dane dla raportu zawieszenia. |
Dotyczy
Bezpieczeństwo wątkowe
Ten typ jest bezpieczny wątkowo dla wszystkich elementów członkowskich.