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

10. Fonctions d'attente

Cours théorique :

Les fonctions d'attente permettent d'attendre de manière explicite qu'un événement se produise. Les fonctions d'attente sont WaitForSingleObject() et WaitForMultipleObjects(). Ces fonctions permettent d'attendre que l'état d'un objet change. Le thread appelant une de ces fonctions peut définir un temps maximal d'attente (qui sera éventuellement infini).

Différents objets peuvent être utilisés. Par exemple, la fonction WaitForSingleObject() peut être utilisée avec le HANDLE d'un thread. La fonction attendra alors que le thread se termine pour retourner. Pour attendre que plusieurs threads se terminent, une application pourra alors appeler la fonction WaitForMultipleObjects() en spécifiant qu'elle désire attendre que l'ensemble des threads ait terminé leur exécution. Ces fonctions mettent le thread qui les appelle en attente et sont donc excellentes au niveau performance. Leur utilisation est donc hautement recommandée.

Un événement créé explicitement peut également être utilisé avec ces fonctions. Ce cas sera étudié dans la partie consacrée aux événements. De même, le HANDLE d'un processus peut être utilisé de manière à attendre qu'il se termine.

Dans le cas de la communication inter-threads nous avons vu qu'une application pouvait utiliser une variable globale pour spécifier à ses threads qu'ils devaient se terminer. L'application doit ensuite attendre que les threads se terminent avant de quitter. Cette attente sera typiquement réalisée par un appel à la fonction WaitForMultipleObjects(). Lorsque cette fonction retournera, l'application sera alors assurée que l'ensemble des ses threads auront terminés et pourra quitter sans risque.


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.