Concurrent Programming - Course Work 2
The Dining
Savages: A tribe of
savages eats communal dinners from a large pot that can hold M servings
of stewed missionary. When a savage wants to eat, he helps himself from
the pot, unless it is empty. If the pot is empty, the savage wakes up the
cook and then waits until the cook has refilled the pot. If the pot is
empty and there are no savages waiting to eat then the cook does not fill
the pot. The behaviour of savages and cook is specified by the following
program. . Provide the code for the monitor class
PotMonitor.
class Savage implements Runnable { PotMonitor pot_; public Savage (PotMonitor pot) {pot_= pot;} public void run() { while(true){ //scratch stomach pot_.getServing(); //eat } } } class Cook implements Runnable { PotMonitor pot_; public Cook (PotMonitor pot) {pot_= pot;} public void run() { while(true) pot_.fill(); } } class PotMonitor { final static int M = 4; //declare variables public synchronized void fill(int M) {…} //implement public synchronized void getServing() {…} //implement }
Specify the invariant for PotMonitor.