Dining Philosophers Problem

The problem consists of philosophers sitting around a table. Each philosopher has access to two forks which he shares with his two neighbours. When a philosopher gets hungry he tries to take the two forks. Obviously, he can not take a fork which is already taken by one of his neighbours. When a philosopher has both his forks, he eats and then puts down the forks again.

Design
Documentation
Source Code