Partager via


Fonction InitializeCriticalSection (synchapi.h)

Initialise un objet de section critique.

Syntaxe

void InitializeCriticalSection(
  [out] LPCRITICAL_SECTION lpCriticalSection
);

Paramètres

[out] lpCriticalSection

Pointeur vers l’objet de section critique.

Valeur renvoyée

Cette fonction ne retourne pas de valeur.

Windows Server 2003 et Windows XP : Dans les situations de mémoire insuffisante, InitializeCriticalSection peut déclencher une exception STATUS_NO_MEMORY . À compter de Windows Vista, cette exception a été éliminée et InitializeCriticalSection réussit toujours, même dans les situations de mémoire insuffisante.

Remarques

Les threads d’un processus unique peuvent utiliser un objet de section critique pour la synchronisation d’exclusion mutuelle. Il n’existe aucune garantie quant à l’ordre dans lequel les threads obtiendront la propriété de la section critique. Toutefois, le système sera équitable pour tous les threads.

Le processus est chargé d’allouer la mémoire utilisée par un objet de section critique, ce qu’il peut faire en déclarant une variable de type CRITICAL_SECTION. Avant d’utiliser une section critique, un thread du processus doit initialiser l’objet .

Une fois qu’un objet de section critique a été initialisé, les threads du processus peuvent spécifier l’objet dans la fonction EnterCriticalSection, TryEnterCriticalSection ou LeaveCriticalSection pour fournir un accès mutuellement exclusif à une ressource partagée. Pour une synchronisation similaire entre les threads de différents processus, utilisez un objet mutex.

Un objet de section critique ne peut pas être déplacé ou copié. Le processus ne doit pas non plus modifier l’objet, mais doit le traiter comme étant logiquement opaque. Utilisez uniquement les fonctions de section critique pour gérer les objets de section critiques. Lorsque vous avez terminé d’utiliser la section critique, appelez la fonction DeleteCriticalSection .

Un objet de section critique doit être supprimé avant de pouvoir être réinitialisé. L’initialisation d’une section critique qui a déjà été initialisée entraîne un comportement non défini.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête synchapi.h (inclure Windows.h sur Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

CreateMutex

Objets de section critique

DeleteCriticalSection

EnterCriticalSection

InitializeCriticalSectionAndSpinCount

LeaveCriticalSection

Fonctions de synchronisation

TryEnterCriticalSection

API Vertdll disponibles dans les enclaves VBS