UniTO/anno2/Galla/MCAD/esercizi2019/bomboloni_sol/secondo_appello/bomb-sem

66 lines
1.2 KiB
Text
Raw Normal View History

2019-01-23 12:03:37 +01:00
int nbomb = 0;
bool butta = false;
bool attesa_piero = true;
Semaphore piero_s = 0;
Semaphore mario_s = 1;
Semaphore rosa_s = 0;
Semaphore cliente_s = 0;
Semaphore ricevi_s = 0;
Semaphore mutex = 1;
Process Mario{
while(1){
V(mario_s);
< friggi >
P(mutex);
nbomb = 30;
set_timer(60 minuti);
if(attesa_piero == true){
V(piero_s);
}
if(da_buttare == true){
da_buttare = false;
V(rosa_s);
}
V(mutex);
}
}
Process Piero{
while(1){
P(cliente_s);
P(mutex);
if(butta == false AND attesa_piero == false){
V(piero_s);
}
V(mutex);
P(piero_s);
< servi cliente >
V(ricevi_s);
P(mutex);
nbomb--;
if(nbomb == 0 and butta == false){
attesa_piero = true;
V(mario_s);
}
V(mutex);
}
}
Process Rosa{
set_timer(60 minuti);
while(1){
wait_timer();
P(mutex);
butta = true;
V(mutex);
P(rosa_s);
}
}
Process Cliente{
V(cliente_s);
P(ricevi_s);
< consuma >;
}