65 lines
1.2 KiB
Text
65 lines
1.2 KiB
Text
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 >;
|
|
}
|