Dining Philosophers
Explore the Dining Philosophers problem to understand how to prevent deadlock in concurrent C# programming. This lesson models philosophers and forks as threads and semaphores, then demonstrates solutions such as limiting philosopher access and changing fork pick-up order to ensure all can eat without deadlock.
We'll cover the following...
Dining Philosophers
This is a classical synchronization problem proposed by Dijkstra.
Imagine you have five philosopher's sitting on a roundtable. The philosopher's do only two kinds of activities. One they contemplate, and two they eat. However, they have only five forks between themselves to eat their food with. Each philosopher requires both the fork to his left and the fork to his right to eat his food.
The arrangement of the philosophers and the forks are shown in the diagram.
Design a solution where each philosopher gets a chance to eat his food without causing a deadlock.
Solution
For no deadlock to occur at all and have all the philosopher be able to eat, we would need ten forks, two for each philosopher. With five forks available, ...