| Platform SDK: DLLs, Processes, and Threads |
The following example shows how a thread initializes, enters, and leaves a critical section. As with the mutex example (see Using Mutex Objects), this example uses structured exception-handling syntax to ensure that the thread calls the LeaveCriticalSection function to release its ownership of the critical section object.
CRITICAL_SECTION GlobalCriticalSection;
// Initialize the critical section.
InitializeCriticalSection(&GlobalCriticalSection);
// Request ownership of the critical section.
__try
{
EnterCriticalSection(&GlobalCriticalSection);
// Access the shared resource.
}
__finally
{
// Release ownership of the critical section.
LeaveCriticalSection(&GlobalCriticalSection);
}