INFO: Critical Sections Versus Mutexes
ID: Q105678
|
The information in this article applies to:
-
Microsoft Win32 Application Programming Interface (API), included with:
-
Microsoft Windows NT versions 3.5, 3.51, 4.0
-
Microsoft Windows 95
-
Microsoft Windows 2000
SUMMARY
Critical sections and mutexes provide synchronization that is very similar,
except that critical sections can be used only by the threads of a single
process. There are two areas to consider when choosing which method to use
within a single process:
- Speed. The Synchronization overview says the following about
critical sections:
... critical section objects provide a slightly faster, more
efficient mechanism for mutual-exclusion synchronization.
Critical sections use a processor-specific test and set instruction
to determine mutual exclusion.
- Deadlock. The Synchronization overview says the following about
mutexes:
If a thread terminates without releasing its ownership of a
mutex object, the mutex is considered to be abandoned. A waiting
thread can acquire ownership of an abandoned mutex, but the wait
function's return value indicates that the mutex is abandoned.
WaitForSingleObject() will return WAIT_ABANDONED for a mutex that
has been abandoned. However, the resource that the mutex is
protecting is left in an unknown state.
There is no way to tell whether a critical section has been
abandoned.
Additional query words:
3.50
Keywords : kbKernBase kbWinOS2000 kbThread kbThreadSync kbDSupport kbGrpKernBase
Version : winnt:3.5,3.51,4.0
Platform : winnt
Issue type : kbinfo
|