TryEnterCriticalSection, fonction (synchapi.h)

Tente d’entrer dans une section critique sans bloquer. Si l’appel réussit, le thread appelant prend possession de la section critique.

Syntaxe

BOOL TryEnterCriticalSection(
  [in, out] LPCRITICAL_SECTION lpCriticalSection
);

Paramètres

[in, out] lpCriticalSection

Pointeur vers l’objet de section critique.

Valeur retournée

Si la section critique est correctement entrée ou si le thread actuel possède déjà la section critique, la valeur de retour est différente de zéro.

Si un autre thread possède déjà la section critique, la valeur de retour est zéro.

Remarques

Les threads d’un processus unique peuvent utiliser un objet de section critique pour la synchronisation d’exclusion mutuelle. 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 appeler la fonction InitializeCriticalSection ou InitializeCriticalSectionAndSpinCount pour initialiser l’objet.

Pour activer l’utilisation mutuellement exclusive d’une ressource partagée, chaque thread appelle la fonction EnterCriticalSection ou TryEnterCriticalSection pour demander la propriété de la section critique avant d’exécuter une section de code qui utilise la ressource protégée. La différence est que TryEnterCriticalSection retourne immédiatement, qu’il ait obtenu ou non la propriété de la section critique, tandis que EnterCriticalSection se bloque jusqu’à ce que le thread puisse prendre possession de la section critique. Une fois le code protégé exécuté, le thread utilise la fonction LeaveCriticalSection pour renoncer à la propriété, ce qui permet à un autre thread de devenir le propriétaire et d’accéder à la ressource protégée. Le thread doit appeler LeaveCriticalSection une fois pour chaque fois qu’il est entré dans la section critique.

N’importe quel thread du processus peut utiliser la fonction DeleteCriticalSection pour libérer les ressources système qui ont été allouées lors de l’initialisation de l’objet de section critique. Une fois cette fonction appelée, l’objet de section critique ne peut plus être utilisé pour la synchronisation.

Si un thread se termine alors qu’il possède la propriété d’une section critique, l’état de la section critique n’est pas défini.

Pour compiler une application qui utilise cette fonction, définissez _WIN32_WINNT en tant que 0x0400 ou version ultérieure. Pour plus d’informations, consultez Utilisation des en-têtes Windows.

Configuration requise

   
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

Objets de section critique

DeleteCriticalSection

EnterCriticalSection

InitializeCriticalSection

InitializeCriticalSectionAndSpinCount

LeaveCriticalSection

Fonctions de synchronisation

API Vertdll disponibles dans les enclaves VBS