UniTO/anno2/Sem1/Galla/MCAD/esercizi2019/bomboloni_sol/cliente/bomboloni-sem-cliente.java

64 lines
917 B
Java
Raw Normal View History

2019-01-23 12:03:37 +01:00
semaphore mario = 0;
semaphore cliente = 0;
semaphore mutex = 1;
semaphore rosa = 0;
semaphore ricevi = 0;
semaphore piero = 0;
int b = 0;
boolean attesaPiero = false;
process mario(){
<friggi>
b=30;
setTimer(60);
V(piero);
while(true){
P(mario);
if(b>0) <Butta>
<Friggi>
b=30;
setTimer(60);
if(attesaPiero){
attesaPiero = false;
V(piero);
}
V(rosa);
}
}
process piero(){
P(piero);
while(true){
P(cliente); // Aspetta la richiesta del cliente
P(mutex);
<Servi>
V(ricevi); // Sblocca il cliente
b--;
if(b==0){
attesaPiero = true;
setTimer(0);
V(mutex);
P(piero);
}
else{
V(mutex);
}
}
}
process rosa(){
while(true){
waitTimer();
P(mutex);
V(mario);
P(rosa);
V(mutex);
}
}
process cliente(){
V(cliente); // Richiede bombolone svegliando Piero
P(ricevi); // Aspetta di ricevere il bombolone da Piero
<Mangia bombolone>
}