工人装水、车运水问题:
semaphore m=1,go=0,empty=0,cm=1;
int count=0;
void main(){
for(int i=1;i<=10;i++){
truck();
work();
}
}
void truck(){
wait(m);
进入装水位;
for(int i=1;i<=20;i++){
signal(empty);
}
wait(go);
离开;
signal(m);
}
void work(){
while(true){
wait(empty);
装水;
wait(cm);
count++;
if(count==20){
signal(go);
count=0;
}
signal(cm);
}
}