AsyncReaderWriterLock Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Blocco non bloccante che consente l'accesso simultaneo, l'accesso esclusivo o simultaneo con l'aggiornamento all'accesso esclusivo.
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
- Ereditarietà
-
AsyncReaderWriterLock
- Derivato
- Implementazioni
Commenti
È necessario usare un elemento awaitable personalizzato anziché restituire semplicemente Task{LockReleaser} perché è necessario impostare i dati CallContext nel contesto della persona che riceve il blocco, che richiede che venga eseguito il codice all'inizio della continuazione (sia che si restituisca o meno).
Costruttori
| Nome | Descrizione |
|---|---|
| AsyncReaderWriterLock() |
Inizializza una nuova istanza della classe AsyncReaderWriterLock. |
| AsyncReaderWriterLock(Boolean) |
Inizializza una nuova istanza della classe AsyncReaderWriterLock. |
| AsyncReaderWriterLock(JoinableTaskContext, Boolean) |
Inizializza una nuova istanza della classe AsyncReaderWriterLock. |
Proprietà
| Nome | Descrizione |
|---|---|
| AmbientLock |
Ottiene il blocco mantenuto dal contesto di esecuzione del chiamante. |
| CanCurrentThreadHoldActiveLock |
Ottiene un valore che indica se il thread corrente può contenere un blocco attivo. |
| CaptureDiagnostics |
Ottiene o imposta un valore che indica se è necessario spendere risorse aggiuntive per raccogliere informazioni utili per la diagnosi dei deadlock e così via. |
| Completion |
Ottiene un'attività il cui completamento segnala che questo blocco non genera più blocchi. |
| DeadlockCheckTimeout |
Ottiene un ritardo di tempo per verificare se il blocco del writer in sospeso e il reader blocca un deadlock. |
| IsAnyLockHeld |
Ottiene un valore che indica se qualsiasi tipo di blocco viene mantenuto dal chiamante e può essere utilizzato immediatamente in base al contesto del chiamante. |
| IsAnyPassiveLockHeld |
Ottiene un valore che indica se qualsiasi tipo di blocco viene mantenuto dal chiamante senza considerare la compatibilità del blocco del contesto del chiamante. |
| IsPassiveReadLockHeld |
Ottiene un valore che indica se un blocco di lettura viene mantenuto dal chiamante senza considerare la compatibilità del blocco del contesto del chiamante. |
| IsPassiveUpgradeableReadLockHeld |
Ottiene un valore che indica se un blocco di lettura aggiornabile viene mantenuto dal chiamante senza considerare la compatibilità del blocco del contesto del chiamante. |
| IsPassiveWriteLockHeld |
Ottiene un valore che indica se un blocco di scrittura viene mantenuto dal chiamante senza considerare la compatibilità del blocco del contesto del chiamante. |
| IsReadLockHeld |
Ottiene un valore che indica se il chiamante contiene un blocco di lettura. |
| IsUnsupportedSynchronizationContext |
Ottiene un valore che indica se synchronizationContext corrente è uno non supportato da questo blocco. |
| IsUpgradeableReadLockHeld |
Ottiene un valore che indica se il chiamante contiene un blocco di lettura aggiornabile. |
| IsWriteLockHeld |
Ottiene un valore che indica se il chiamante contiene un blocco di scrittura. |
| NoMessagePumpSynchronizationContext |
Ottiene un oggetto SynchronizationContext che, se applicato, elimina qualsiasi message pump che può essere eseguito durante blocchi sincroni del thread chiamante. |
| SyncObject |
Ottiene l'oggetto utilizzato per sincronizzare l'accesso ai campi dell'istanza. |
Metodi
| Nome | Descrizione |
|---|---|
| Complete() |
Fa sì che le nuove richieste di blocco di primo livello vengano rifiutate e che l'attività Completion passi a uno stato completato dopo il rilascio di eventuali blocchi rilasciati. |
| Dispose() |
Blocco non bloccante che consente l'accesso simultaneo, l'accesso esclusivo o simultaneo con l'aggiornamento all'accesso esclusivo. |
| Dispose(Boolean) |
Elimina le risorse gestite e non gestite mantenute da questa istanza. |
| GetAggregateLockFlags() |
Restituisce l'aggregazione dei flag di blocco per tutti i blocchi annidati. |
| GetHangReport() |
Contribuisce ai dati per un report di blocco. |
| GetTaskSchedulerForReadLockRequest() |
Ottenere l'utilità di pianificazione dell'attività per eseguire la continuazione quando viene acquisito il blocco. AsyncReaderWriterLock usa uno speciale SynchronizationContext per gestire blocchi esclusivi e ignorerà l'utilità di pianificazione delle attività fornita, quindi viene usata solo in uno scenario di blocco in lettura. Questo metodo viene chiamato all'interno del contesto di esecuzione per attendere il blocco di lettura, in modo che possa essere prelevato TaskScheduler in base al contesto di esecuzione corrente. Nota: l'utilità di pianificazione dell'attività viene usata solo quando il blocco viene rilasciato in un secondo momento. Se il blocco viene generato immediatamente quando CanCurrentThreadHoldActiveLock restituisce true, verrà ignorato. |
| HideLocks() |
Impedisce l'uso o la visibilità dei blocchi del chiamante fino a quando il valore restituito non viene eliminato. |
| LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle) |
Controlla se i flag aggregati di tutti i blocchi nello stack di blocchi soddisfano i flag specificati. |
| OnBeforeExclusiveLockReleasedAsync() |
Generato quando l'ultimo blocco di scrittura sta per essere rilasciato. |
| OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle) |
Generato quando viene rilasciato un blocco. |
| OnBeforeWriteLockReleased(Func<Task>) |
Registra un callback da richiamare quando il blocco di scrittura mantenuto dal chiamante sta per essere rilasciato (blocco di scrittura più esterno). |
| OnCriticalFailure(Exception) |
Richiamato quando il blocco rileva un errore interno o un modello di utilizzo non valido che indica un grave difetto da segnalare immediatamente all'applicazione e/o arrestare il processo per evitare blocchi o danneggiamenti dei dati. |
| OnCriticalFailure(String) |
Richiamato quando il blocco rileva un errore interno o un modello di utilizzo non valido che indica un grave difetto da segnalare immediatamente all'applicazione e/o arrestare il processo per evitare blocchi o danneggiamenti dei dati. |
| OnExclusiveLockReleasedAsync() |
Richiamato dopo il rilascio di un blocco esclusivo, ma prima che chiunque abbia la possibilità di entrare nel blocco. |
| OnUpgradeableReadLockReleased() |
Richiamato quando viene rilasciato un blocco di lettura aggiornabile di primo livello, senza alcun blocco rimanente (scrittura). |
| ReadLockAsync(CancellationToken) |
Ottiene un blocco di lettura, in attesa asincrono del blocco se non è immediatamente disponibile. |
| UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Ottiene un blocco di lettura aggiornabile, in modo asincrono in attesa del blocco se non è immediatamente disponibile. |
| UpgradeableReadLockAsync(CancellationToken) |
Ottiene un blocco di lettura aggiornabile, in modo asincrono in attesa del blocco se non è immediatamente disponibile. |
| WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Ottiene un blocco di scrittura, in attesa asincrono del blocco se non è immediatamente disponibile. |
| WriteLockAsync(CancellationToken) |
Ottiene un blocco di scrittura, in attesa asincrono del blocco se non è immediatamente disponibile. |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IHangReportContributor.GetHangReport() |
Contribuisce ai dati per un report di blocco. |
Si applica a
Thread safety
Questo tipo è thread-safe per tutti i membri.