Monitor.Pulse(Object) Méthode
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.
Avertit un thread situé dans la file d'attente en suspens d'un changement d'état de l'objet verrouillé.
public:
static void Pulse(System::Object ^ obj);
public static void Pulse (object obj);
static member Pulse : obj -> unit
Public Shared Sub Pulse (obj As Object)
Paramètres
- obj
- Object
Objet attendu par un thread.
Exceptions
Le paramètre obj
a la valeur null
.
Le thread appelant ne possède pas le verrou pour l'objet spécifié.
Remarques
Seul le propriétaire actuel du verrou peut signaler un objet en attente à l’aide de Pulse
.
Le thread qui possède actuellement le verrou sur l’objet spécifié appelle cette méthode pour signaler le thread suivant en ligne pour le verrou. Une fois le pouls reçu, le thread en attente est déplacé vers la file d’attente prête. Lorsque le thread qui a Pulse
appelé libère le verrou, le thread suivant dans la file d’attente prête (qui n’est pas nécessairement le thread qui a été pulsé) acquiert le verrou.
Important
La Monitor classe ne conserve pas l’état indiquant que la Pulse méthode a été appelée. Ainsi, si vous appelez Pulse quand aucun thread n’est en attente, le thread suivant qui appelle Wait se bloque comme si Pulse n’avait jamais été appelé. Si deux threads utilisent Pulse et Wait interagissent, cela peut entraîner un blocage. Comparez cela au comportement de la AutoResetEvent classe : si vous signalez un AutoResetEvent en appelant sa Set méthode et qu’aucun thread n’est en attente, le AutoResetEvent reste dans un état signalé jusqu’à ce qu’un thread appelle WaitOne, WaitAnyou WaitAll. Libère AutoResetEvent ce thread et retourne à l’état non signé.
Notez qu’un objet synchronisé contient plusieurs références, notamment une référence au thread qui contient actuellement le verrou, une référence à la file d’attente prête, qui contient les threads prêts à obtenir le verrou, et une référence à la file d’attente, qui contient les threads qui attendent la notification d’une modification de l’état de l’objet.
Les Pulse
méthodes , PulseAllet Wait doivent être appelées à partir d’un bloc de code synchronisé.
Pour signaler plusieurs threads, utilisez la PulseAll méthode .