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

9. Sections Critiques

Cours théorique :

Les sections critiques sont utilisées dans le cadre de la synchronisation, de manière à réaliser des exclusions mutuelles. Elles permettent de créer une section de code qui sera protégé, c'est à dire qu'un seul thread à la fois aura accès à ce code. Les sections critiques sont très utiles pour protéger des données partagées.

L'utilisation des sections critiques est relativement simple. Pour créer une section critique, l'application doit déclarer une variable de type CRITICAL_SECTION, généralement globale. Puis au moins un thread doit initialiser la section critique en appelant la fonction InitializeCriticalSection(). Cette fonction peut être appelée un nombre indéfini de fois. Par exemple, chaque thread qui va utiliser la section critique peut s'assurer qu'elle est valide en appelant cette fonction.

Deux fonctions seront ensuite utilisées pour signifier l'entrée et la sortie d'un bloc protégé. La fonction EnterCriticalSection() permet de signaler l'entrée dans un bloc protégé. Si un thread a déjà appelé cette fonction et n'est pas encore sorti du bloc protégé, cette fonction mettra en attente n'importe quel autre thread. Le même thread peut appeler cette fonction plusieurs fois sans être bloqué, mais il devra alors appeler la fonction de sortie de bloc un nombre de fois égal pour indiquer sa sortie du bloc protégé.

Un thread indique qu'il sort d'un bloc protégé en appelant la fonction LeaveCriticalSection(). Un des threads en attente sera alors débloqué et pourra à son tour exécuter le bloc protégé.


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.