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 senza blocco che consente l'accesso simultaneo, l'accesso esclusivo o la simultaneità con l'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 oggetto attendabile 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 (se si restituisce o meno).
Costruttori
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à
AmbientLock |
Ottiene il blocco impostato dal contesto di esecuzione 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 devono essere spese risorse aggiuntive per raccogliere informazioni utili per diagnosticare i deadlock e così via. |
Completion |
Ottiene un'attività il cui completamento segnala che il blocco non genererà più blocchi. |
DeadlockCheckTimeout |
Ottiene un ritardo di tempo per verificare se il blocco writer in sospeso e i blocchi del lettore formano un deadlock. |
IsAnyLockHeld |
Ottiene un valore che indica se qualsiasi tipo di blocco viene mantenuto dal chiamante e può essere usato 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 l'oggetto SyncContext corrente è uno che 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, quando applicato, elimina qualsiasi pompa di messaggi che può essere eseguita durante blocchi sincroni del thread chiamante. |
SyncObject |
Ottiene l'oggetto usato per sincronizzare l'accesso ai campi dell'istanza. |
Metodi
Complete() |
Determina il rifiuto di nuove richieste di blocco di primo livello e il passaggio dell'attività Completion allo stato completato dopo che tutti i blocchi emessi sono stati rilasciati. |
Dispose() |
Blocco senza blocco che consente l'accesso simultaneo, l'accesso esclusivo o la simultaneità con l'accesso esclusivo. |
Dispose(Boolean) |
Elimina le risorse gestite e non gestite mantenute da questa istanza. |
GetAggregateLockFlags() |
Restituisce l'aggregato dei flag di blocco per tutti i blocchi annidati. |
GetHangReport() |
Fornisce i dati per un rapporto 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 ignora l'utilità di pianificazione delle attività fornita, quindi questa operazione viene usata solo in uno scenario di blocco di lettura. Questo metodo viene chiamato all'interno del contesto di esecuzione per attendere il blocco di lettura, in modo che possa essere selezionato 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'utilizzo o la visibilità dei blocchi (o del blocco) del chiamante fino a che il valore restituito è eliminato. |
LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle) |
Verifica se i flag aggregati da 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) |
Attivato quando viene rilasciato qualsiasi blocco. |
OnBeforeWriteLockReleased(Func<Task>) |
Registra un callback da richiamare quando il blocco di scrittura tenuto dal chiamante sta per essere rilasciato in definitiva (blocco di scrittura più esterno). |
OnCriticalFailure(Exception) |
Richiamato quando il blocco rileva un errore interno o un modello di utilizzo illegale che indica un grave difetto che deve essere segnalato immediatamente all'applicazione e/o ridurre il processo per evitare blocchi o danneggiamenti dei dati. |
OnCriticalFailure(String) |
Richiamato quando il blocco rileva un errore interno o un modello di utilizzo illegale che indica un grave difetto che deve essere segnalato immediatamente all'applicazione e/o ridurre 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 immettere il blocco. |
OnUpgradeableReadLockReleased() |
Richiamato quando viene rilasciato un blocco di lettura aggiornabile di primo livello, lasciando nessun blocco rimanente (scrittura). |
ReadLockAsync(CancellationToken) |
Ottiene un blocco di lettura, attendendo in modo asincrono il blocco, se non è immediatamente disponibile. |
UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Ottiene un blocco di lettura, attendendo in modo asincrono il blocco, se non è immediatamente disponibile. |
UpgradeableReadLockAsync(CancellationToken) |
Ottiene un blocco di lettura aggiornabile, in attesa asincrono del blocco se non è immediatamente disponibile. |
WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Ottiene un blocco di scrittura, attendendo in modo asincrono il blocco, se non è immediatamente disponibile. |
WriteLockAsync(CancellationToken) |
Ottiene un blocco di scrittura, attendendo in modo asincrono il blocco, se non è immediatamente disponibile. |
Implementazioni dell'interfaccia esplicita
IHangReportContributor.GetHangReport() |
Fornisce i dati per un rapporto di blocco. |
Si applica a
Thread safety
Questo tipo è thread-safe per tutti i membri.