放水果问题

桌上有一空盘,最多允许存放两只水果每次只能放入或是取出一只放一个苹果,爸爸只向盘中放一个苹果,妈妈只向盘中放一个桔子,两个儿子专等吃盘中的桔子,两个女儿专等吃苹果。用P、V操作实现爸爸、妈妈、儿子、女儿四个并发进程的同步与互斥的关系。

题目解析

由题目可知,这是一个经典的生产者——消费者问题的改编,爸爸相当于两个女儿,是生产者;妈妈相当于两个儿子,是生产者。

  1. 爸爸、妈妈、儿子、女儿四个角色之间的进程互斥,用mutex来表示;
  2. 对于爸爸和妈妈来说,每次放水果之前要确认盘子里面是否满了,用full表示盘子里面水果的数量;
  3. 对于儿子来说,每次取桔子之前都要确认盘子里面有没有桔子,用orange来表示盘子里面桔子的数量;
  4. 对于女儿来说,每次取苹果之前都要确认盘子里面有没有苹果,用apple来表示盘子里面苹果的数量;

代码

semaphore full=2,mutex=1,orange=0,apple=0;void father()
{while(TRUE){P(full);P(mutex);放苹果;V(mutex);V(apple); }
}void mother()
{while(TRUE){P(full);P(mutex);放桔子;V(mutex);V(orange); }} void son1(/son2) ()
{while(TRUE){P(orange);P(mutex);取桔子;V(mutex);V(full); }
} void daughter1(/daughter2) ()
{while(TRUE){P(apple);P(mutex);取苹果;V(mutex);V(full); }
}void main()
{cobeginfather();mother();daughter1();daughter2();son1();son2();coend
}

桌上有一空盘,最多允许存放两只水果,爸爸只向盘中放一个苹果,妈妈只向盘中放一个桔子,两个儿子专等吃盘中的桔子,两个女儿专等吃苹果。用P、V操作实现爸爸、妈妈、儿子、女儿四个并发进程的同步。相关推荐

  1. 桌上有一空盘,最多允许存放一个水果。爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。 试用P、V操作实现爸爸、儿子、女儿三个并发进程的同步。

    问题描述:桌上有一空盘,最多允许存放一个水果.爸爸可向盘中放一个苹果或放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果. 试用P.V操作实现爸爸.儿子.女儿三个并发进程的同步. 问题分析及思路: 本题 ...

  2. 桌上有一空盘,允许存放一只水果。爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进

    桌上有一空盘,允许存放一只水果.爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果.规定当盘空时一次只能放一只水果供吃者取用,请用P.V原语实现爸爸.儿子.女儿三个并发进 ...

  3. 桌上有一空盘,最多允许存放一只水果。爸爸只向盘中放一个苹果,妈妈只向盘中放一个桔子,儿子专等吃盘中的桔子,女儿专等吃苹果。用wait、signal操作实现爸爸、妈妈、儿子、女儿四个并发进程的同步。

    分析设计四个信号量metux,empty.apple.orange: metux表示:爸爸.妈妈.儿子和女儿进程对盘子的互斥使用: empty表示:盘子是否为空: apple表示:是否可以取苹果: o ...

  4. P、V操作与c++代码实现爸爸放苹果,妈妈放桔子,两个儿子专吃盘子中桔子,两个女儿专吃盘子中苹果问题

    二.吃水果综合设计 桌子上有一只盘子,最多可容纳两个水果,每次只能放入或取出一个水果.爸爸专向盘子放苹果(apple),妈妈专向盘子中放桔子(orange):两个儿子专等吃盘子中的桔子,两个女儿专等吃 ...

  5. (多线程同步练习)桌子上有一只盘子,每次只能放一只水果,爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子里的橘子,一个女儿专等吃盘子里的苹果。写出能使爸爸、妈妈、儿子、女儿正确同步工作的

    这是操作系统的一道课堂练习题 题目完整描述: 桌子上有一只盘子,每次只能放一只水果,爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子里的橘子,一个女儿专等吃盘子里的苹果.写出能使爸爸.妈 ...

  6. 桌上有一只盘子,每次只能放入一个水果。请用Wait()、Signal()原语实现爸爸、儿子、女儿三个并发进程的同步。

    1.桌上有一只盘子,每次只能放入一个水果.爸爸专向盘中放苹果,妈妈专向盘中放桔子,一个女儿专等吃盘中的苹果,一个儿子专等吃盘中的桔子.试用P,V操作写出他们(4个并发进程)能同步的程序. semaph ...

  7. 用c++实现PV操作(父亲母亲儿子女儿)

    题目:桌上有一只盘子,每次只能放入1只水果.爸爸专放苹果,妈妈专放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果.模拟P,V操作实现爸爸.妈妈.儿子.女儿进程的同步控制. 由于我用的是_ ...

  8. 【操作系统】编程实现如下互斥同步问题:桌上有一空盘,爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。请用P、V原语(wait和signal操作)实现爸爸、儿子、女儿三

    题目 编程实现如下互斥同步问题:桌上有一空盘,爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果.请用P.V原语(wait和signal操作)实现爸爸.儿子.女儿三个并发 ...

  9. 操作系统同步问题:有一个没有限量的大盘子,爸爸只往里面放苹果,妈妈只往里面放桔子,儿子只拿苹果吃,女儿只拿桔子吃,请写出能描述4个人行为的同步方案

    有一个没有限量的大盘子,爸爸只往里面放苹果,妈妈只往里面放桔子,儿子只拿苹果吃,女儿只拿桔子吃,请写出能描述4个人行为的同步方案. Program father: begin: repeat:prod ...

最新文章

  1. 良心发现,时隔一年再回首莫比乌斯反演(公式性质证明+题目练习)
  2. iOS SDK具体解释之UIDevice(系统版本号,设备型号...)
  3. [转载] 深入理解Linux修改hostname
  4. 开源社区合入patch的步骤
  5. oracle 12c 创建PDB用户即Local User (PDB与CDB)
  6. VS发布 错误 未能将文件 复制到
  7. html 数组输入框,javascript输入数组
  8. tomcat 设置编码格式
  9. Xprinter XP-N160L 打印机驱动
  10. shell深井冰之linux命令行下使用豆瓣FM
  11. Skyline TEP5.1.3二次开发入门——初级(四)
  12. matlab画漫画,震惊!无聊男子竟用函数画出可爱的卡通猫
  13. 音频剪辑软件分享,教你快速剪辑音频
  14. 博士申请 | 美国达特茅斯学院杨耀青老师招收深度学习方向全奖博士生
  15. Java 动态眨眼 EyesJPanel (整理)
  16. 启动docker 服务时 虚拟机端口转发 外部无法访问
  17. java scavenge_Java虚拟机(JVM)垃圾回收器Parallel Scavenge收集器 - Break易站
  18. java poi导出PPT格式
  19. Altium designer 10安装破解以及出现缺少mfc71.dll文件的情况处理
  20. 白月黑羽教python之pytest:课后练习

热门文章

  1. wordpress获取用户数据函数:get_userdata
  2. 2022年危险化学品生产单位安全生产管理人员考试内容及危险化学品生产单位安全生产管理人员证考试
  3. [工具]ScreenToGif:一款小而实用的屏幕录制生成gif工具
  4. oracle数据库字符集AL32UTF8修改为ZHS16GBK即从超集到子集
  5. Kotlin Flow 冷流 StateFlow 热流 StateFlow 的应用
  6. 搞了一个论坛玩玩!http://lupeiqing.3322.org/bbs
  7. Node.js.不要堵塞线程(一)
  8. 在珠海python工资一般多少钱_珠海学习BI工资多少,大数据的应用
  9. 图片如何缩小不降低清晰度?
  10. 利用28335的epwm产生spwm波的总结