Critical Sections Versus Mutexes

ID: Q105678

3.50 3.51 4.00 | 4.00

WINDOWS NT     | WINDOWS
kbprg

The information in this article applies to:

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.

KBCategory: kbprg KBSubcategory: BseSync Additional reference words: 3.50 3.51 4.00 95
Keywords          : kbKernBase kbThread kbGrpKernBase 
Version           : 3.50 3.51 4.00 | 4.00
Platform          : NT WINDOWS

Last Reviewed: January 19, 1997