Dans mon dernier poteau j'ai discuté l'utilisation de WaitForSingleObject par rapport aux mutexes et aux manières possibles de mettre en application la fonctionnalité équivalente en mettant en communication un tel code à GNU/Linux. Dans ce poteau je décrirai l'utilisation de cet api avec des objets d'événement dans Microsoft Windows et proposerai des manières possibles de signaler un tel code à GNU/Linux ou à Unix.
D'abord, un certain fond sur des objets d'événement. Un objet d'événement est juste un autre type d'objet d'expéditeur de grain de Windows. D'un codage prespective, un objet d'événement est un objet de synchronisation qui encapsule un ou plusieurs objets d'expéditeur de grain et dont la sémantique de synchronisation sont accessible par l'intermédiaire de WaitForSingleObject et de ses cousins. À un moment donné un objet de synchronisation nonsignaled ou est signalé, c.-à-d. l'objet peut seulement être dans un de deux états possibles.
Toute les famille de WaitFor des api comprenant l'attente de WaitForSingleobject sur une poignée d'objet ou les poignées jusqu'à quelques critères spécifiques est rencontrée. Les deux critères de base pour tous ces api sont l'état signalé de l'objet sur lequel la poignée il attend et un valeur du dépassement de durée. Ainsi un fil qui appelle des attentes de cet api jusqu'à ce que l'objet spécifique entre dans l'état signalé ou la temporisation spécifique a expiré. Peu ou pas de temps- CPU est employé quand un tel fil est dans l'état d'attente.
Dans le cas des événements, un CreateEvent ou un OpenEvent renvoie une poignée à un objet d'événement. Quand un événement est dans l'état signalé il signifie que cela l'événement a la capacité de libérer un ou plusieurs fils attendant cet événement particulier à signaler. Quand un événement est dans l'état nonsignaled il ne libérera aucun fil de attente. Au commencement l'état d'un événement nonsignaled. Un état d'objet d'événement est placé explicitement à signaler par SetEvent ou PulseEvent. Des objets d'événement sont également employés dans des opérations recouvertes telles que la lecture d'une douille, dans ce cas l'état d'objet d'événement est placé à signaler par le grain plutôt que par une application.
Les événements viennent également dans deux types remis à zéro. Si un événement est un événement de manuel-remise, alors tout le retour de WaitForSingleObjects qui attendent cet événement si ainsi configuré. En d'autres termes un événement de manuel-remise peut déclencher l'action par un ou plusieurs WaitForSingleObject ou ses cousins. Un état d'objet d'événement de manuel-remise doit être remis à zéro explicitement à nonsignaled par ResetEvent.
Pour un objet d'événement de réinitialisation automatique, WaitForSingleObject et c'est des relations remis à zéro

























