Skip to content

carlosxl/dining-philosopher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

dining-philosopher

Complexity was added to this implementation merely for practice purpose. A lot of simpler solutions can be found.

You'd see this problem in an online course "Concurrency in Go by University of California, Irvine".

The problem

Implement the dining philosopher’s problem with the following constraints/modifications.

  1. There should be 5 philosophers sharing chopsticks, with one chopstick between each adjacent pair of philosophers.
  2. Each philosopher should eat only 3 times (not in an infinite loop as we did in lecture)
  3. The philosophers pick up the chopsticks in any order, not lowest-numbered first (which we did in lecture).
  4. In order to eat, a philosopher must get permission from a host which executes in its own goroutine.
  5. The host allows no more than 2 philosophers to eat concurrently.
  6. Each philosopher is numbered, 1 through 5.
  7. When a philosopher starts eating (after it has obtained necessary locks) it prints “starting to eat ” on a line by itself, where is the number of the philosopher.
  8. When a philosopher finishes eating (before it has released its locks) it prints “finishing eating ” on a line by itself, where is the number of the philosopher.

About

A go concurrency practice

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages