进程控制与同步、信号量、管程

工人装水、车运水问题:

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);
}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43231223/article/details/83617071