AsyncReaderWriterLock Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Eine nicht blockierende Sperre, die gleichzeitigen Zugriff, exklusiven Zugriff oder gleichzeitige Upgradebarkeit für exklusiven Zugriff ermöglicht.
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
- Vererbung
-
AsyncReaderWriterLock
- Abgeleitet
- Implementiert
Hinweise
Wir müssen eine benutzerdefinierte wartende Funktion verwenden, anstatt einfach Task{LockReleaser} zurückzugeben, da wir CallContext-Daten im Kontext der Person festlegen müssen, die die Sperre empfängt, was erfordert, dass wir Code am Anfang der Fortsetzung ausführen (unabhängig davon, ob wir ausbeuten oder nicht).
Konstruktoren
| Name | Beschreibung |
|---|---|
| AsyncReaderWriterLock() |
Initialisiert eine neue Instanz der AsyncReaderWriterLock-Klasse. |
| AsyncReaderWriterLock(Boolean) |
Initialisiert eine neue Instanz der AsyncReaderWriterLock-Klasse. |
| AsyncReaderWriterLock(JoinableTaskContext, Boolean) |
Initialisiert eine neue Instanz der AsyncReaderWriterLock-Klasse. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| AmbientLock |
Ruft die Sperre ab, die vom Ausführungskontext des Aufrufers gehalten wird. |
| CanCurrentThreadHoldActiveLock |
Ruft einen Wert ab, der angibt, ob der aktuelle Thread eine aktive Sperre enthalten darf. |
| CaptureDiagnostics |
Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob zusätzliche Ressourcen zum Sammeln von Informationen aufgewendet werden sollen, die bei der Diagnose von Deadlocks nützlich wären usw. |
| Completion |
Ruft eine Aufgabe ab, deren Abschluss signalisiert, dass diese Sperre keine Sperren mehr ausgibt. |
| DeadlockCheckTimeout |
Ruft eine Zeitverzögerung ab, um zu überprüfen, ob ausstehende Writer-Sperre und Leseleser eine Deadlock bilden. |
| IsAnyLockHeld |
Ruft einen Wert ab, der angibt, ob eine Art von Sperre vom Aufrufer gehalten wird und sofort verwendet werden kann, wenn der Kontext des Anrufers gegeben ist. |
| IsAnyPassiveLockHeld |
Ruft einen Wert ab, der angibt, ob eine Art von Sperre vom Aufrufer gehalten wird, ohne die Sperrkompatibilität des Kontexts des Aufrufers zu berücksichtigen. |
| IsPassiveReadLockHeld |
Ruft einen Wert ab, der angibt, ob eine Lesesperre vom Aufrufer gehalten wird, ohne die Sperrkompatibilität des Kontexts des Aufrufers zu berücksichtigen. |
| IsPassiveUpgradeableReadLockHeld |
Ruft einen Wert ab, der angibt, ob eine upgradefähige Lesesperre vom Aufrufer gehalten wird, ohne die Sperrkompatibilität des Kontexts des Aufrufers zu berücksichtigen. |
| IsPassiveWriteLockHeld |
Ruft einen Wert ab, der angibt, ob eine Schreibsperre vom Aufrufer gehalten wird, ohne die Sperrkompatibilität des Kontexts des Aufrufers zu berücksichtigen. |
| IsReadLockHeld |
Ruft einen Wert ab, der angibt, ob der Aufrufer eine Lesesperre enthält. |
| IsUnsupportedSynchronizationContext |
Ruft einen Wert ab, der angibt, ob der aktuelle SynchronizationContext einer ist, der von dieser Sperre nicht unterstützt wird. |
| IsUpgradeableReadLockHeld |
Ruft einen Wert ab, der angibt, ob der Aufrufer eine upgradefähige Lesesperre enthält. |
| IsWriteLockHeld |
Ruft einen Wert ab, der angibt, ob der Aufrufer eine Schreibsperre enthält. |
| NoMessagePumpSynchronizationContext |
Ruft ein SynchronizationContext , das bei Anwendung alle Nachrichtenpumpe unterdrückt, die während synchroner Blöcke des aufrufenden Threads ausgeführt werden kann. |
| SyncObject |
Ruft das Objekt ab, das zum Synchronisieren des Zugriffs auf die Felder dieser Instanz verwendet wird. |
Methoden
| Name | Beschreibung |
|---|---|
| Complete() |
Bewirkt, dass neue Sperranforderungen auf oberster Ebene abgelehnt werden und die Completion Aufgabe in einen abgeschlossenen Zustand übergeht, nachdem alle ausgestellten Sperren freigegeben wurden. |
| Dispose() |
Eine nicht blockierende Sperre, die gleichzeitigen Zugriff, exklusiven Zugriff oder gleichzeitige Upgradebarkeit für exklusiven Zugriff ermöglicht. |
| Dispose(Boolean) |
Entfernt verwaltete und nicht verwaltete Ressourcen, die von dieser Instanz gehalten werden. |
| GetAggregateLockFlags() |
Gibt das Aggregat der Sperrkennzeichnungen für alle geschachtelten Sperren zurück. |
| GetHangReport() |
Trägt Daten für einen Hang-Bericht bei. |
| GetTaskSchedulerForReadLockRequest() |
Rufen Sie den Aufgabenplaner ab, um die Fortsetzung auszuführen, wenn die Sperre abgerufen wird. AsyncReaderWriterLock verwendet ein Spezielles SynchronizationContext zum Behandeln von exklusiven Sperren und ignoriert den bereitgestellten Aufgabenplaner, sodass dies nur in einem Lesesperrszenario verwendet wird. Diese Methode wird innerhalb des Ausführungskontexts aufgerufen, um die Lesesperre zu warten, sodass sie basierend auf dem aktuellen Ausführungskontext aufgenommen TaskScheduler werden kann. Hinweis: Der Aufgabenplaner wird nur verwendet, wenn die Sperre später ausgestellt wird. Wenn die Sperre sofort ausgegeben wird, wenn CanCurrentThreadHoldActiveLock "true" zurückgegeben wird, wird sie ignoriert. |
| HideLocks() |
Verhindert die Verwendung oder Sichtbarkeit der Sperrungen des Aufrufers, bis der zurückgegebene Wert verworfen wird. |
| LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle) |
Überprüft, ob die aggregierten Flags von allen Sperren im Sperrstapel die angegebenen Kennzeichnungen erfüllen. |
| OnBeforeExclusiveLockReleasedAsync() |
Wird ausgelöst, wenn die letzte Schreibsperre losgelassen werden soll. |
| OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle) |
Wird ausgelöst, wenn eine Sperre freigegeben wird. |
| OnBeforeWriteLockReleased(Func<Task>) |
Registriert einen Rückruf, der aufgerufen werden soll, wenn die schreibgeschützte Sperre des Aufrufers letztendlich freigegeben werden soll (äußerste Schreibsperre). |
| OnCriticalFailure(Exception) |
Wird aufgerufen, wenn die Sperre einen internen Fehler oder ein illegales Verwendungsmuster erkennt, das einen schwerwiegenden Fehler angibt, der sofort an die Anwendung gemeldet werden sollte und/oder den Prozess herunterdrückt, um Blockaden oder Datenbeschädigungen zu vermeiden. |
| OnCriticalFailure(String) |
Wird aufgerufen, wenn die Sperre einen internen Fehler oder ein illegales Verwendungsmuster erkennt, das einen schwerwiegenden Fehler angibt, der sofort an die Anwendung gemeldet werden sollte und/oder den Prozess herunterdrückt, um Blockaden oder Datenbeschädigungen zu vermeiden. |
| OnExclusiveLockReleasedAsync() |
Wird aufgerufen, nachdem eine exklusive Sperre freigegeben wurde, aber bevor jemand die Möglichkeit hat, die Sperre einzugeben. |
| OnUpgradeableReadLockReleased() |
Wird aufgerufen, wenn eine upgradefähige Lesesperre auf oberster Ebene freigegeben wird und keine verbleibende (Schreib-)Sperre übrig bleibt. |
| ReadLockAsync(CancellationToken) |
Ruft eine Lesesperre ab, die asynchron auf die Sperre wartet, wenn sie nicht sofort verfügbar ist. |
| UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Ruft eine upgradefähige Lesesperre ab, die asynchron auf die Sperre wartet, wenn sie nicht sofort verfügbar ist. |
| UpgradeableReadLockAsync(CancellationToken) |
Ruft eine upgradefähige Lesesperre ab, die asynchron auf die Sperre wartet, wenn sie nicht sofort verfügbar ist. |
| WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Ruft eine Schreibsperre ab, die asynchron auf die Sperre wartet, wenn sie nicht sofort verfügbar ist. |
| WriteLockAsync(CancellationToken) |
Ruft eine Schreibsperre ab, die asynchron auf die Sperre wartet, wenn sie nicht sofort verfügbar ist. |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IHangReportContributor.GetHangReport() |
Trägt Daten für einen Hang-Bericht bei. |
Gilt für:
Threadsicherheit
Dieser Typ ist threadsicher für alle Mitglieder.