Lock, mutex, semaphore... what's the difference?

victor picture victor · Feb 25, 2010 · Viewed 243.5k times · Source

I've heard these words related to concurrent programming, but what's the difference between them?

Answer

Peter picture Peter · Feb 25, 2010

A lock allows only one thread to enter the part that's locked and the lock is not shared with any other processes.

A mutex is the same as a lock but it can be system wide (shared by multiple processes).

A semaphore does the same as a mutex but allows x number of threads to enter, this can be used for example to limit the number of cpu, io or ram intensive tasks running at the same time.

For a more detailed post about the differences between mutex and semaphore read here.

You also have read/write locks that allows either unlimited number of readers or 1 writer at any given time.