EnterCriticalSection
The EnterCriticalSection
function waits for ownership of the specified critical section object. The
function returns when the calling thread is granted ownership.
VOID EnterCriticalSection(
LPCRITICAL_SECTION lpCriticalSection |
// pointer to
critical section object |
); |
|
Parameters
lpCriticalSection
Points to the
critical section object.
Return Values
This function
does not return a value.
Remarks
The threads
of a single process can use a critical section object for mutual-exclusion
synchronization. The process is responsible for allocating the memory used by a
critical section object, which it can do by declaring a variable of type
CRITICAL_SECTION. Before using a critical section, some thread of the process
must call the InitializeCriticalSection
To enable
mutually exclusive access to a shared resource, each thread calls the EnterCriticalSection
or TryEnterCriticalSection
Once a thread
has ownership of a critical section, it can make additional calls to EnterCriticalSection
or TryEnterCriticalSection without blocking its execution. This prevents
a thread from deadlocking itself while waiting for a critical section that it
already owns.
Any thread of
the process can use the DeleteCriticalSection function to release the
system resources that were allocated when the critical section object was
initialized. After this function has been called, the critical section object
can no longer be used for synchronization.
See Also