Microsoft KB Archive/105678

From BetaArchive Wiki

INFO: Critical Sections Versus Mutexes

Q105678



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





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:

  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.