Microsoft KB Archive/105678

{|
 * width="100%"|

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:

  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 kbOSWin2000 kbThread kbThreadSync kbDSupport kbGrpDSKernBase

Issue type : kbinfo

Technology : kbAudDeveloper kbWin32sSearch kbWin32API