Note

Access to this page requires authorization. You can try signing in or .

Access to this page requires authorization. You can try .

Using Critical Section Objects

The following example shows how a thread initializes, enters, and releases a critical section. It uses the InitializeCriticalSectionAndSpinCount, EnterCriticalSection, LeaveCriticalSection, and DeleteCriticalSection functions.

// Global variable
CRITICAL_SECTION CriticalSection; 

int main( void )
{
 ...

 // Initialize the critical section one time only.
 if (!InitializeCriticalSectionAndSpinCount(&CriticalSection, 
 0x00000400) ) 
 return;
 ...

 // Release resources used by the critical section object.
 DeleteCriticalSection(&CriticalSection);
}

DWORD WINAPI ThreadProc( LPVOID lpParameter )
{
 ...

 // Request ownership of the critical section.
 EnterCriticalSection(&CriticalSection); 

 // Access the shared resource.

 // Release ownership of the critical section.
 LeaveCriticalSection(&CriticalSection);

 ...
return 1;
}

Feedback

Was this page helpful?

Additional resources