68 lines
1.6 KiB
Java
68 lines
1.6 KiB
Java
process vassoio{
|
|
int b = 0;
|
|
entry piero_rosa(in String inMess, out String outMess);
|
|
boolean attesaPiero = false;
|
|
|
|
call mario.friggi(b); // Chiama Mario per friggere
|
|
b = 30;
|
|
while(true){
|
|
accept piero_rosa(in String inMess, out String outMess) // Aspetta una richiesta da Piero o da Rosa
|
|
{
|
|
if(inMess=="piero"){
|
|
b--;
|
|
if(b==0){ // Se era l'ultimo bombolone..
|
|
attesaPiero = true;
|
|
outMess = "finiti"; // setta l'output per dire a Piero che sono finiti
|
|
setTimer(0); // e va a svegliare Rosa
|
|
}
|
|
else{
|
|
outMess = "non finiti"; // setta l'output per dire a Piero che non sono finiti
|
|
}
|
|
}
|
|
else if(inMess=="rosa"){
|
|
call mario.friggi(b); // Chiede a Mario di friggere
|
|
b = 30;
|
|
if (attesaPiero) { // Se Piero ha venduto l'ultimo ed era in attesa..
|
|
attesaPiero = false;
|
|
call piero.riprendi(); // ..lo sveglia
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
process Mario{
|
|
entry friggi(in int b_rim);
|
|
|
|
while(true){
|
|
accept friggi(in int b_rim) // Aspetta di essere fritto dal vassoio
|
|
{
|
|
if(b_rim>0){ // Se c'erano bomboloni scaduti, li butta
|
|
<butta>
|
|
}
|
|
<friggi>
|
|
setTimer(60);
|
|
}
|
|
}
|
|
}
|
|
|
|
process Piero{
|
|
entry riprendi();
|
|
String mess;
|
|
|
|
while(true){
|
|
<attendi clienti>
|
|
call vassoio.piero_rosa("piero"); // Comunica al vassoio che deve servire un cliente
|
|
<servo cliente>
|
|
if (mess == "finiti") { / Se il vassoio comunica che i bomboloni sono finiti..
|
|
accept riprendi() // ..si mette in attesa di poter riprendere
|
|
}
|
|
}
|
|
}
|
|
|
|
process Rosa{
|
|
while(true){
|
|
waitTimer();
|
|
call vassoio.piero_rosa("rosa"); // Avverte il vassoio di far friggere Mario
|
|
}
|
|
}
|