Condividi tramite


Funzione TryEnterCriticalSection (synchapi.h)

Tenta di immettere una sezione critica senza bloccare. Se la chiamata ha esito positivo, il thread chiamante assume la proprietà della sezione critica.

Sintassi

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

Parametri

[in, out] lpCriticalSection

Puntatore all'oggetto sezione critica.

Valore restituito

Se la sezione critica viene immessa correttamente o il thread corrente possiede già la sezione critica, il valore restituito è diverso da zero.

Se un altro thread possiede già la sezione critica, il valore restituito è zero.

Commenti

I thread di un singolo processo possono usare un oggetto sezione critica per la sincronizzazione dell'esclusione reciproca. Il processo è responsabile dell'allocazione della memoria usata da un oggetto sezione critica, che può eseguire dichiarando una variabile di tipo CRITICAL_SECTION. Prima di usare una sezione critica, alcuni thread del processo devono chiamare la funzione InitializeCriticalSection o InitializeCriticalSectionAndSpinCount per inizializzare l'oggetto.

Per abilitare l'uso reciproco di una risorsa condivisa, ogni thread chiama la funzione EnterCriticalSection o TryEnterCriticalSection per richiedere la proprietà della sezione critica prima di eseguire qualsiasi sezione di codice che usa la risorsa protetta. La differenza è che TryEnterCriticalSection restituisce immediatamente, indipendentemente dal fatto che abbia ottenuto la proprietà della sezione critica, mentre EnterCriticalSection blocca fino a quando il thread non può assumere la proprietà della sezione critica. Al termine dell'esecuzione del codice protetto, il thread usa la funzione LeaveCriticalSection per rinunciare alla proprietà, consentendo a un altro thread di diventare il proprietario e ottenere l'accesso alla risorsa protetta. Il thread deve chiamare LeaveCriticalSection una volta per ogni volta che ha immesso la sezione critica.

Qualsiasi thread del processo può usare la funzione DeleteCriticalSection per rilasciare le risorse di sistema allocate durante l'inizializzazione dell'oggetto sezione critica. Dopo aver chiamato questa funzione, l'oggetto sezione critica non può più essere usato per la sincronizzazione.

Se un thread termina mentre ha la proprietà di una sezione critica, lo stato della sezione critica non è definito.

Per compilare un'applicazione che usa questa funzione, definire _WIN32_WINNT come 0x0400 o versione successiva. Per altre informazioni, vedere Uso delle intestazioni di Windows.

Requisiti

   
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione synchapi.h (include Windows.h in Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Oggetti sezione critica

DeleteCriticalSection

EnterCriticalSection

InitializeCriticalSection

InitializeCriticalSectionAndSpinCount

LeaveCriticalSection

Funzioni di sincronizzazione

API Vertdll disponibili nelle enclave VBS