Skip to content

1226. The Dining Philosophers

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
class DiningPhilosophers {
  std::mutex mutex;

 public:
  void wantsToEat(int philosopher, function<void()> pickLeftFork,
                  function<void()> pickRightFork, function<void()> eat,
                  function<void()> putLeftFork, function<void()> putRightFork) {
    mutex.lock();
    pickLeftFork();
    pickRightFork();
    eat();
    putLeftFork();
    putRightFork();
    mutex.unlock();
  }
};