Partager via


Objets d’événement (synchronisation)

Un objet d’événement est un objet de synchronisation dont l’état peut être explicitement défini sur signalé à l’aide de la fonction SetEvent. Voici les deux types d’objet d’événement.

Objet Description
Événement de réinitialisation manuelle Objet d’événement dont l’état reste signalé jusqu’à ce qu’il soit explicitement réinitialisé à la fonction ResetEvent. Bien qu’il soit signalé, un certain nombre de threads en attente ou des threads qui spécifient par la suite le même objet d’événement dans l’une des fonctions d’attente , peuvent être libérés.
Événement de réinitialisation automatique Objet d’événement dont l’état reste signalé jusqu’à ce qu’un thread d’attente unique soit libéré, auquel moment le système définit automatiquement l’état sur non signé. Si aucun thread n’attend, l’état de l’objet d’événement reste signalé. Si plusieurs threads attendent, un thread en attente est sélectionné. Ne supposez pas une commande fiFO (first-out). Les événements externes tels que les API en mode noyau peuvent modifier l’ordre d’attente.

 

L’objet d’événement est utile pour envoyer un signal à un thread indiquant qu’un événement particulier s’est produit. Par exemple, en entrée et sortie superposées, le système définit un objet d’événement spécifié à l’état signalé lorsque l’opération se chevauche. Un thread unique peut spécifier différents objets d’événements dans plusieurs opérations qui se chevauchent simultanément, puis utiliser l’une des fonctions d’attente d’attente attendre l’état d’un des objets d’événement à signaler.

Un thread utilise la fonction CreateEvent ou CreateEventEx pour créer un objet événement. Le thread de création spécifie l’état initial de l’objet et indique s’il s’agit d’un objet d’événement de réinitialisation manuelle ou de réinitialisation automatique. Le thread de création peut également spécifier un nom pour l’objet d’événement. Les threads dans d’autres processus peuvent ouvrir un handle à un objet d’événement existant en spécifiant son nom dans un appel à la fonction OpenEvent. Pour plus d’informations sur les noms des objets mutex, event, sémaphore et minuteur, consultez de synchronisation interprocess.

à l’aide d’objets d’événements