一、爸爸放苹果妈妈放橘子儿子橘子女儿吃苹果问题

现在有一个盘子,爸爸向这个盘子里放苹果,妈妈向这个盘子里放橘子。儿子只从这个盘子里拿妈妈放置的橘子吃,而女儿从这个盘子里拿爸爸放的苹果吃。这是由生产者-消费者问题,发展过来的多生产者多消费者问题

二、思路分析

对于盘子来说,这是一个临界资源,一次只能有一个生产者或者一个消费者进入,因此需要设置互斥锁 对于盘子进行限制。对于一个盘子,其容量是有限的,对应的临界资源是有限的。对于爸爸和妈妈放置的橘子,我们也需要对其进行互斥保护,因此需要设置相应的信号量进行保护。

三、代码实现

semaphore mutex=1;//互斥锁
semaphore plat=n;//盘子容量
semaphore apple=0;//苹果数量
semaphore orange=0;//橘子数量
//爸爸
father(){while(1){p(plat);//判断盘子是否有空位P(mutex);//判断是否可以放苹果//放苹果V(apple);//盘子里苹果+1V(mutex);//释放互斥锁}
}
//妈妈
mother(){while(1){p(plat);//判断盘子是否有空位P(mutex);//判断是否可以放橘子//放苹果V(orange);//盘子里橘子+1V(mutex);//释放互斥锁}
}
//儿子
son(){while(1){p(orange);//判断盘子是否有橘子P(mutex);//判断是否可以拿橘子//拿橘子吃V(plat);//盘子里空位+1V(mutex);//释放互斥锁}
}
//女儿
daughter(){while(1){p(apple);//判断盘子是否有空位P(mutex);//判断是否可以拿苹果//拿苹果吃V(plat);//盘子里空位+1V(mutex);//释放互斥锁}
}

操作系统经典问题之爸爸放苹果妈妈放橘子儿子吃橘子女儿吃苹果问题相关推荐

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

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

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

    放水果问题 桌上有一空盘,最多允许存放两只水果每次只能放入或是取出一只放一个苹果,爸爸只向盘中放一个苹果,妈妈只向盘中放一个桔子,两个儿子专等吃盘中的桔子,两个女儿专等吃苹果.用P.V操作实现爸爸.妈 ...

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

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

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

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

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

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

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

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

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

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

  8. 计算机操作系统——经典进程的同步问题

    计算机操作系统--信号量机制与经典进程的同步问题 信号量机制 随着发展,信号量从整型信号量经记录型信号量,进而发展为"信号量集"机制. 一般来说,信号量的值与相应的资源的使用情况有 ...

  9. 操作系统-经典同步例题

    目录 1. 生产者/消费者问题 2. 读者和写者问题 3. 理发师睡觉问题 1. 生产者/消费者问题 描述: 一个或多个生产者产生数据并放入缓冲 每次只能有一个消费者从缓冲区取数据(互斥) 每次只能由 ...

最新文章

  1. python工程师薪资坑吗-python能到什么程度
  2. Spring Cloud 使用 FeignClient 启动报错
  3. 红米电流电压测试软件,你也是27W家族?Redmi K20 Pro充电测试
  4. 助力区域性银行突破困局,网易云信入选爱分析报告典型案例
  5. code.php验证码,php 验证码 实例
  6. 前端学习(2223):react之jsx的样式和注释(2)
  7. Libco是一个C/C++协程库,在微信服务中广泛使用
  8. 用js实现一个无限循环的动画
  9. 集成学习 Ensemble Learing(???)
  10. k64 datasheet学习笔记3---Chip Configuration之System modules
  11. 大数据可视化的价值体现在哪
  12. Shader 学习笔记 ---Depth of Field 介绍
  13. 04_zookeeper客户端使用及常用命令
  14. google 新功能 快讯
  15. oracle11g在linux7的静默安装脚本
  16. SpringBoot系列之(一):入门
  17. 截断二进制指数退避算法c++实现
  18. HDU 6441 Find Integer 【费马大定理】
  19. Hadoop Ha (High avilable)配置
  20. 打印300页的书本胶装需要多少钱

热门文章

  1. Win7下实现磁盘软Raid1
  2. 学生选课系统---数据库课程设计SQL Server
  3. 【Python数据清洗】pivot_table 与 pivot 的区别——手把手系列
  4. java runnable main_【BUG】”main” prio=5 tid=1 RUNNABLE
  5. 听高级产品经理来聊一聊,什么是产品架构
  6. java如何jasper_java – 如何以编程方式打印Jasper报告
  7. Nodejs (一)
  8. 余弦公式在c语言里面怎么用_C语言中求余弦值的相关函数总结
  9. Unity 使用UnityWebRequest问题小结
  10. 贴一点代码(用VC实现在WINXP下的宽带拨号)