有一只最多能装2只兔子的铁笼子,猎人仅能向笼子中放入兔子(每次只能放入一只),若笼子时满的,则猎人必须等待;饭店老板仅能从笼子中取兔子(每次只能取出一只),若笼子时空的则他也必须等待。假·····

编程入门 行业动态 更新时间:2024-10-09 23:21:14

有一只最多能装2只兔子的铁<a href=https://www.elefans.com/category/jswz/34/924578.html style=笼子,猎人仅能向笼子中放入兔子(每次只能放入一只),若笼子时满的,则猎人必须等待;饭店老板仅能从笼子中取兔子(每次只能取出一只),若笼子时空的则他也必须等待。假·····"/>

有一只最多能装2只兔子的铁笼子,猎人仅能向笼子中放入兔子(每次只能放入一只),若笼子时满的,则猎人必须等待;饭店老板仅能从笼子中取兔子(每次只能取出一只),若笼子时空的则他也必须等待。假·····

有一只最多能装2只兔子的铁笼子,猎人仅能向笼子中放入兔子(每次只能放入一只),若笼子时满的,则猎人必须等待;饭店老板仅能从笼子中取兔子(每次只能取出一只),若笼子时空的则他也必须等待。假设初始时笼子时空的。定义信号量并初始化,使用P、V操作模拟猎人和饭店老板进程之间的同步与互斥。

 

Semaphore x = 0;   //这里的x代表笼子中兔子的数量

Semaphore y = 2; //这里的y时笼子中空位数量

Semaphore mutex = 1;   //互斥访问笼子

 hunter(){

while(TRUE){

P(y);    //猎人让空位减少一个

P(mutex);

猎人放兔子

V(mutex);

V(x);  // 猎人让兔子增加一个

}

}

boss(){

while(TRUE){

P(x);    //老板让兔子减少一个

P(mutex);

老板取兔子

V(mutex);

V(y);  // 老板让空位增加一个

}

}

主线程:

void main(){

cobegin

hunter();

boss();

coend

}

更多推荐

有一只最多能装2只兔子的铁笼子,猎人仅能向笼子中放入兔子(每次只能放入一只),若笼子时满的,则猎人必须等待;饭店老板仅能从笼子中取兔子(每次只能取出一只),若笼

本文发布于:2024-02-07 06:04:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754057.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:笼子   一只   兔子   仅能   猎人

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!