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); }