Objets d’événements (synchronisation)
Un objet é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.
Object | Description |
---|---|
Événement de réinitialisation manuelle | Objet d’événement dont l’état reste signalé jusqu’à ce qu’il soit explicitement réinitialisé sur non signé par la fonction ResetEvent . Pendant qu’il est signalé, n’importe quel nombre de threads en attente, ou threads qui spécifient par la suite le même objet d’événement dans l’une des fonctions d’attente, peut être libéré. |
Événement de réinitialisation automatique | Objet d’événement dont l’état reste signalé jusqu’à ce qu’un seul thread en attente soit libéré, à ce moment-là, 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 sont en attente, un thread en attente est sélectionné. Ne supposez pas une commande FIFO (premier entré, premier sorti). Les événements externes tels que les API en mode noyau peuvent modifier l’ordre d’attente. |
L’objet événement est utile pour envoyer un signal à un thread indiquant qu’un événement particulier s’est produit. Par exemple, dans les entrées et sorties qui se chevauchent, le système définit un objet d’événement spécifié à l’état signalé lorsque l’opération qui se chevauche est terminée. Un thread unique peut spécifier différents objets d’événements dans plusieurs opérations simultanées qui se chevauchent, puis utiliser l’une des fonctions d’attente à plusieurs objets pour attendre que l’état de l’un des objets d’événement soit signalé.
Un thread utilise la fonction CreateEvent ou CreateEventEx pour créer un objet d’événement. Le thread de création spécifie l’état initial de l’objet et 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 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 Synchronisation Interprocess.
Rubriques connexes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour