AsyncReaderWriterLock Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Verrou non bloquant qui autorise l’accès simultané, l’accès exclusif ou la possibilité de mise à niveau vers l’accès exclusif.
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
- Héritage
-
AsyncReaderWriterLock
- Dérivé
- Implémente
Remarques
Nous devons utiliser un élément awaitable personnalisé au lieu de simplement renvoyer task{LockReleaser}, car nous devons définir les données CallContext dans le contexte de la personne qui reçoit le verrou, ce qui nécessite que nous puissions exécuter du code au début de la continuation (que nous cédions ou non).
Constructeurs
AsyncReaderWriterLock() |
Initialise une nouvelle instance de la classe AsyncReaderWriterLock. |
AsyncReaderWriterLock(Boolean) |
Initialise une nouvelle instance de la classe AsyncReaderWriterLock. |
AsyncReaderWriterLock(JoinableTaskContext, Boolean) |
Initialise une nouvelle instance de la classe AsyncReaderWriterLock. |
Propriétés
AmbientLock |
Obtient le verrou géré par le contexte d'exécution de l'appelant. |
CanCurrentThreadHoldActiveLock |
Obtient une valeur indiquant si le thread actuel est autorisé à contenir un verrou actif. |
CaptureDiagnostics |
Obtient ou définit une valeur indiquant si des ressources supplémentaires doivent être dépensées pour collecter des informations utiles dans le diagnostic des interblocages, etc. |
Completion |
Obtient une tâche dont l'achèvement signale que ce verrouillage n'émet plus de verrous. |
DeadlockCheckTimeout |
Obtient un délai pour case activée si le verrouillage de l’enregistreur en attente et les verrous de lecteur constituent un interblocage. |
IsAnyLockHeld |
Obtient une valeur indiquant si n’importe quel type de verrou est détenu par l’appelant et peut être utilisé immédiatement en fonction du contexte de l’appelant. |
IsAnyPassiveLockHeld |
Obtient une valeur indiquant si un type de verrou est détenu par l’appelant sans tenir compte de la compatibilité de verrou du contexte de l’appelant. |
IsPassiveReadLockHeld |
Obtient une valeur indiquant si un verrou de lecture est détenu par l’appelant sans tenir compte de la compatibilité de verrou du contexte de l’appelant. |
IsPassiveUpgradeableReadLockHeld |
Obtient une valeur indiquant si un verrou de lecture pouvant être mis à niveau est détenu par l’appelant sans tenir compte de la compatibilité de verrou du contexte de l’appelant. |
IsPassiveWriteLockHeld |
Obtient une valeur indiquant si un verrou d’écriture est détenu par l’appelant sans tenir compte de la compatibilité de verrou du contexte de l’appelant. |
IsReadLockHeld |
Obtient une valeur indiquant si l’appelant détient un verrou de lecture. |
IsUnsupportedSynchronizationContext |
Obtient une valeur indiquant si le SynchronizationContext actuel n’est pas pris en charge par ce verrou. |
IsUpgradeableReadLockHeld |
Obtient une valeur indiquant si l’appelant détient un verrou de lecture pouvant être mis à niveau. |
IsWriteLockHeld |
Obtient une valeur indiquant si l’appelant détient un verrou d’écriture. |
NoMessagePumpSynchronizationContext |
Obtient un SynchronizationContext qui, lorsqu’il est appliqué, supprime toute pompe de messages qui peut s’exécuter pendant les blocs synchrones du thread appelant. |
SyncObject |
Obtient l’objet utilisé pour synchroniser l’accès aux champs de cette instance. |
Méthodes
Complete() |
A pour effet que les nouvelles requêtes de verrou de niveau supérieur sont rejetées et la tâche Completion passe à un état terminé après l'ouverture de tous les verrous émis. |
Dispose() |
Verrou non bloquant qui autorise l’accès simultané, l’accès exclusif ou la possibilité de mise à niveau vers l’accès exclusif. |
Dispose(Boolean) |
Supprime les ressources managées et non managées détenues par ce instance. |
GetAggregateLockFlags() |
Retourne l'agrégat des indicateurs de verrou pour tous les verrous imbriqués. |
GetHangReport() |
Fournit des données pour un rapport de blocage. |
GetTaskSchedulerForReadLockRequest() |
Obtenez le planificateur de tâches pour exécuter la continuation lorsque le verrou est acquis. AsyncReaderWriterLock utilise un spécial SynchronizationContext pour gérer les verrous exclusifs et ignore le planificateur de tâches fourni. Il est donc utilisé uniquement dans un scénario de verrouillage en lecture. Cette méthode est appelée dans le contexte d’exécution pour attendre le verrou de lecture, afin qu’elle puisse reprendre TaskScheduler en fonction du contexte d’exécution actuel. Remarque : le planificateur de tâches est utilisé uniquement lorsque le verrou est émis ultérieurement. Si le verrou est émis immédiatement lorsque CanCurrentThreadHoldActiveLock retourne true, il est ignoré. |
HideLocks() |
Empêche l'utilisation ou la visibilité des verrous de l'appelant jusqu'à ce que la valeur retournée soit supprimée. |
LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle) |
Vérifie si les indicateurs agrégés de tous les verrous de la pile de verrous répondent aux indicateurs spécifiés. |
OnBeforeExclusiveLockReleasedAsync() |
Déclenché lorsque le dernier verrou d’écriture est sur le point d’être libéré. |
OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle) |
Déclenché lorsqu’un verrou est libéré. |
OnBeforeWriteLockReleased(Func<Task>) |
Enregistre un rappel à appeler lorsque le verrou d’écriture détenu par l’appelant est sur le point d’être finalement libéré (verrou d’écriture le plus externe). |
OnCriticalFailure(Exception) |
Appelé lorsque le verrou détecte une erreur interne ou un modèle d’utilisation illégal qui indique une faille grave qui doit être immédiatement signalée à l’application et/ou arrêter le processus pour éviter les blocages ou l’altération des données. |
OnCriticalFailure(String) |
Appelé lorsque le verrou détecte une erreur interne ou un modèle d’utilisation illégal qui indique une faille grave qui doit être immédiatement signalée à l’application et/ou arrêter le processus pour éviter les blocages ou l’altération des données. |
OnExclusiveLockReleasedAsync() |
Appelé après la libération d’un verrou exclusif, mais avant que quiconque ait la possibilité d’entrer dans le verrou. |
OnUpgradeableReadLockReleased() |
Appelé lorsqu’un verrou de lecture pouvant être mis à niveau supérieur est libéré, sans aucun verrou (en écriture) restant. |
ReadLockAsync(CancellationToken) |
Obtient un verrou de lecture, en attente asynchrone du verrou s'il n'est pas immédiatement disponible. |
UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Obtient un verrou de lecture, en attente asynchrone du verrou s'il n'est pas immédiatement disponible. |
UpgradeableReadLockAsync(CancellationToken) |
Obtient un verrou de lecture pouvant être mis à niveau, en attente asynchrone du verrou s’il n’est pas immédiatement disponible. |
WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken) |
Obtient un verrou d'écriture, en attente asynchrone du verrou s'il n'est pas immédiatement disponible. |
WriteLockAsync(CancellationToken) |
Obtient un verrou d'écriture, en attente asynchrone du verrou s'il n'est pas immédiatement disponible. |
Implémentations d’interfaces explicites
IHangReportContributor.GetHangReport() |
Fournit des données pour un rapport de blocage. |
S’applique à
Cohérence de thread
Ce type est thread-safe pour tous les membres.