Philosopher dinner

Problem statement

5 philosophers are seated around a table, with food in from of them.

  • To eat, every philosopher needs two forks, the ones at her/his left and right sides.

  • Every philosopher alternates periods in which she/he medidates with periods in which she/he eats.

Modeling every philosopher as a different process or thread and the forks as resources, design a solution for the problem.

A solution

State diagram

This is a possible solution for the dining-philosopher problem.

  • when a philosopher gets hungry, he/she first gets the left fork and then holds it while waits for the right one.

Let’s look at an implementations of this solution!

Code

A race condition

This solution may work some times, but in general suffers from race conditions.

Let’s look at a code snippet:

Last updated