Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS C FAQs C TUTORIELS C LIVRES C COMPILATEURS C SOURCES GTK+

Tutorial d'initiation
A la programmation avec l'API Windows

Tutorial d'initiation a la programmation Windows avec Microsoft Visual C++
PrécédentIndexSuivant

Chapitre 5

Le multithreading

11. Evénements

Cours théorique :

Les événements peuvent être utilisés dans les fonctions d'attente. L'API Windows fournit des fonctions permettant de créer des événements de manière explicite. L'état de ces événements pourra ensuite être modifié de manière explicite. L'état d'un événement peut être signalé ou non signalé. Lorsqu'un événement est en état non signalé, l'appel à une fonction d'attente provoquera la suspension du thread appelant jusqu'à ce que l'événement passe en état signalé.

Les fonctions CreateEvent() et CloseHandle() peuvent être utilisées pour la création et la destruction d'événements. Les fonctions SetEvent(), ResetEvent() et PulseEvent() pourront ensuite être utilisées pour modifier l'état de l'objet.

Les événements peuvent être configurés de différentes manières. La configuration d'un événement se fait lors de sa création. Si l'objet est en mode 'réinitialisation manuelle' il restera en état signalé tant que son état ne sera pas explicitement réinitialisé grâce à la fonction ResetEvent(). Si plusieurs threads étaient en attente de cet objet, ils seront alors tous libérés au moment ou l'état de l'objet passera à 'signalé'.

Si l'objet est en mode 'réinitialisation automatique', son état sera automatiquement replacé à 'non signalé' dès qu'un thread en attente sera libéré. Si plusieurs threads sont en attente d'un même événement, alors un seul thread sera libéré eu moment ou l'état sera passé à 'signalé'.

Les événements sont un moyen pratique de synchroniser plusieurs threads de manière explicite.

Les événements peuvent par exemple être utilisés pour mettre un thread en attente tandis qu'un autre thread initialise des données. Dès que les données seront initialisées, le ou les threads seront débloqués par le thread ayant initialisé les données.

Tout comme les sémaphores, les événements peuvent être nommés ou non. Si l'événement est nommé, son nom doit être unique dans l'ensemble du système. Si une autre application tente de créer un événement du même nom, la fonction CreateEvent() retournera un HANDLE sur l'événement précédemment créé. Ceci peut être utilisé pour synchroniser des applications entre elles.


PrécédentIndexSuivant

Responsable bénévole de la rubrique C : Arnaud Feltz (buchs) - Contacter par EMail :
Vos questions techniques : forum d'entraide C - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.