Ben Langhinrichs

Photograph of Ben Langhinrichs

E-mail address - Ben Langhinrichs

Recent posts

Tue 22 Sep 2020

Exciton Boost - Barbarians are at the gate

Thu 17 Sep 2020

Exciton Boost - WYSI(hopefully)WYG

Tue 15 Sep 2020

Exciton Boost - Formula(s) for success

October, 2020
    01 02 03
04 05 06 07 08 09 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Search the weblog

Genii Weblog

A good analogy: Mutex vs. Semaphore

Mon 17 Apr 2006, 12:37 PM

by Ben Langhinrichs
Reprinted from this page:

Mutex vs. Semaphore, what is the difference?
The Toilet Example  (c) Copyright 2005, Niclas Winquist ;)


Is a key to a toilet. One person can have the key - occupy the toilet - at the time. When finished, the person gives (frees) the key to the next person in the queue.

Officially: "Mutexes are typically used to serialise access to a section of  re-entrant code that cannot be executed concurrently by more than one thread. A mutex object only allows one thread into a controlled section, forcing other threads which attempt to gain access to that section to wait until the first thread has exited from that section."
Ref: Symbian Developer Library

(A mutex is really a semaphore with value 1.)


Is the number of free identical toilet keys. Example, say we have four toilets with identical locks and keys. The semaphore count - the count of keys - is set to 4 at beginning (all four toilets are free), then the count value is decremented as people are coming in. If all toilets are full, ie. there are no free keys left, the semaphore count is 0. Now, when eq. one person leaves the toilet, semaphore is increased to 1 (one free key), and given to the next person in the queue.

Officially: "A semaphore restricts the number of simultaneous users of a shared resource up to a maximum number. Threads can request access to the resource (decrementing the semaphore), and can signal that they have finished using the resource (incrementing the semaphore)."
Ref: Symbian Developer Library

Copyright 2006 Genii Software Ltd.

What has been said:

451.1. Richard Schwartz
(04/17/2006 08:26 PM)

In either case, I don't want to see what happens if a thread times out waiting...


451.2. Ben Langhinrichs
(04/17/2006 10:38 PM)

You make an excellent point, Rich!