Registrations are now open. Join us today!
There is still a lot of work to do on the wiki yet! More information about editing can be found here.
Already have an account?

Microsoft KB Archive/105678

From BetaArchive Wiki

INFO: Critical Sections Versus Mutexes


The information in this article applies to:

  • Microsoft Win32 Application Programming Interface (API), included with:
    • Microsoft Windows NT Server versions 3.5, 3.51, 4.0
    • Microsoft Windows NT Workstation versions 3.5, 3.51, 4.0
    • Microsoft Windows 95
    • the operating system: Microsoft Windows 2000


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:

  1. 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.

  2. 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 kbOSWin2000 kbThread kbThreadSync kbDSupport kbGrpDSKernBase
Issue type : kbinfo
Technology : kbAudDeveloper kbWin32sSearch kbWin32API

Last Reviewed: December 16, 2000
© 2001 Microsoft Corporation. All rights reserved. Terms of Use.