When two or more threads of your program are blocked from
gaining access to a resource and as a result cannot make
ant progress, such a situation is called Starvation.
The ultimate form of Starvation is Deadlock. Deadlock
occurs when two or more threads are waiting on a condition
that cannot be satisfied. Most often a Deadlock occurs when
two or more threads are each waiting for the other to do
something.
Semaphores are used to avoid Deadlock situations.  |