global Parameters const PERSONS := 10, CARS := 20 var NumPersons: int := PERSONS, NumCars: int := CARS body Parameters getarg(1, NumPersons); getarg(2, NumCars) write("The simulation is running with the following parameters:") write("Number of persons =", NumPersons, "Number of cars =", NumCars) end Parameters _monitor(Space) import Parameters op want_to(ID, JD: int), done_it(ID, JD: int) _body(Space) var Occupied: int := 0 _condvar2(OKto, 1:NumPersons, 1:NumCars) write("age:", age(), "capacity is", NumPersons, "persons", NumCars, "cars") _proc (want_to(ID,JD)) if Occupied = NumPersons -> _wait(OKto[ID][JD]) fi write("age:", age(), "Person", ID, "is entering") Occupied++ _proc_end _proc (done_it(ID,JD)) if Occupied > 0 -> Occupied-- fi write("age:", age(), "Person", ID, "left") _signal(OKto[ID][JD]) _proc_end _monitor_end resource Main import Parameters, Space body Main() want_to(1,2) done_it(2,1) end Main /* ............... Example compile and run(s) % sr -v MultiSR version 2.3, October 1994 % m2sr -sx sim_Space.m % sr -o sim_Space sim_Space.sr % ./sim_Space 3 4 The simulation is running with the following parameters: Number of persons = 3 Number of cars = 4 age: 178 capacity is 3 persons 4 cars age: 182 Person 1 is entering age: 184 Person 2 left ... end of example run(s) */