dining-philosophers-golang

command module
v0.0.0-...-5b7c8a8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 1, 2024 License: GPL-3.0 Imports: 4 Imported by: 0

README

dining-philosophers-golang

Dining Philosophers Problem With Golang.

Problem:

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

  • There should be 5 philosophers sharing chopsticks, with one chopstick between each adjacent pair of philosophers.

  • Each philosopher should eat only 3 times.

  • The philosophers pick up the chopsticks in any order, not lowest-numbered first.

  • In order to eat, a philosopher must get permission from a host which executes in its own goroutine.

  • The host allows no more than 2 philosophers to eat concurrently.

  • Each philosopher is numbered, 1 through 5.

  • 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.

  • 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.


Example Output:

command:

go run philosophers.go

output:

Starting to eat 4
Starting to eat 1
Finishing to eat 1
Starting to eat 2
Finishing to eat 4
Starting to eat 0
Finishing to eat 0
Starting to eat 4
Finishing to eat 2
Starting to eat 1
Finishing to eat 1
Finishing to eat 4
Starting to eat 2
Finishing to eat 2
Starting to eat 0
Starting to eat 3
Finishing to eat 3
Finishing to eat 0
Starting to eat 1
Starting to eat 4
Finishing to eat 4
Starting to eat 3
Finishing to eat 1
Starting to eat 0
Finishing to eat 0
Finishing to eat 3
Starting to eat 3
Finishing to eat 3
Starting to eat 2
Finishing to eat 2

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL