CCriticalSection

Un objet de classe CCriticalSection représente une « section critique » — un objet de synchronisation qui permet à un seul thread à la fois pour accéder à une ressource ou un article du code. Les sections critiques sont utiles lorsqu'un seul thread à la fois peut être permise pour modifier des données ou une autre ressource contrôlée. Par exemple, l'ajout d'une liste liée de nœuds est un processus qui n'est accueilli par un seul thread à la fois. En utilisant un objet CCriticalSection pour contrôler la liste liée, un seul thread à la fois peut également accéder à la liste.

Les sections critiques sont utilisées au lieu de mutex lorsque la vitesse est critique et la ressource ne sera pas utilisée au-delà des limites de processus. Pour plus d'informations sur l'utilisation des mutex dans MFC, consultez CMutex.

Pour utiliser un objet CCriticalSection , construire l'objet CCriticalSection lorsque c'est nécessaire. Vous pouvez ensuite accéder à la section critique lorsque le constructeur retourne. Appeler Unlock lorsque vous avez terminé accédant à la section critique.

Pour accéder à une ressource contrôlée par un objet CCriticalSection de cette manière, tout d'abord créer une variable de type CSingleLock en fonction de la ressource sur votre accès membre. Appelez ensuite la fonction de membre de l'objet lock Lock (par exemple, CSingleLock::Lock). À ce stade, votre thread sera soit accéder à la ressource, attendez que la ressource être libéré et accéder ou attendre pour la ressource d'être libéré et hors du temps, ne pas accéder à la ressource. En tout cas, votre ressource a été consultée de façon thread-safe. Pour libérer la ressource, utilisez la fonction de membre de l'objet lock Unlock (par exemple, CSingleLock::Unlock), ou permettre l'objet lock à tomber hors de la portée.

Alternativement, vous pouvez créer un objet CCriticalSection autonome et y accéder explicitement avant de tenter d'accéder à la ressource contrôlée. Cette méthode, tout adhérent à une personne lisant votre code source, est plus sujette à l'erreur comme vous devez vous rappeler de verrouiller et de déverrouiller la section critique avant et après l'accès.

Pour plus d'informations sur l'utilisation des objets CCriticalSection , consultez l'article Multithreading : comment utiliser les Classes de synchronisation dans le Guide du programmeur Visual C++.

# include lt;afxmt.h>

Membres de la classe |nbsp ; Classe de base | Graphique de la hiérarchie

Écha&ntillonnbsp ; Exemple MFC MTGDI

Voir aussi  ;CMutex

Index