-
-
-
CENAPAD-MGCO
A seguir: Notas
Acima: Exemplos de Uso
Anterior: Semáforos
PHIL =
*[ ... THINK; room ! enter(); fork(RIGHT) ! pickup(); fork(LEFT) ! pickup(); EAT; fork(RIGHT) ! putdown(); fork(LEFT) ! putdown(); room ! exit(); ]
FORK =
*[ phil(LEFT) ? pickup() -> phil(LEFT) ? putdown() || phil(RIGHT)? pickup() -> phil(RIGHT)? putdown() ]
ROOM =
n: integer; n := 0; *[ (i:0..4) n < 4; phil(i) ? enter() -> n := n+1 || (i:0..4) phil(i) ? exit() -> n := n-1; ]
Filósofos:
[ room:: ROOM // fork(i:0..4) FORK // phil(i:0..4) PHIL ]