一、吸烟者问题

假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟并抽掉它,但要卷起并抽掉一支烟,抽烟者需要有三种材料:烟草、纸和胶水。三个抽烟者中,第一个拥有烟草,第二个拥有纸,第三个拥有胶水。供应者进程无限地提供三种材料,供应者每次将两种材料放到桌子上,拥有剩下那种材料的抽烟者卷一根烟并抽掉它,并给供应者一个信号告诉已完成,此时供应者就会将另外两种材料放到桌上,如此重复(让三个抽烟者轮流地抽烟)。

二、代码实现

int temp=randomnum;//定义随机数
semaphore  offer1=0;
semaphore  offer2=0;
semaphore  offer2=0;
semaphore  finish=0;
offer(){while(1){if(temp%3==0)V(offer1);if(temp2%3==1)V(offer2);if(temp2%3==2)V(offer3);P(finish);}
}
smoker1(){while(1){P(offer1);//吸烟V(finish);}
}
smoker2(){while(1){P(offer2);//吸烟V(finish);}
}
smoker3(){while(1){P(offer3);//吸烟V(finish);}
}

操作系统经典问题之吸烟者问题相关推荐

  1. 操作系统 --经典同步问题之吸烟者问题读者-写者问题(七)

    一.吸烟者问题 1.问题描述 假设一个系统有三个抽烟者进程和一个供应者进程.每个抽烟者不停地卷烟并抽掉,但是要卷起并抽掉一支烟,需要三种材料:烟草.纸.胶水.三个抽烟者中,每一个第一个拥有烟草,第二个 ...

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

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

  3. 超硬核!学霸把操作系统经典算法给敲完了!要知行合一

    上期的笔记,浏览快1万了,既然关注的人很多,那就发出来承诺过的算法全模拟,希望帮到你们. 上期的操作系统学霸笔记,考试复习面试全靠它 一.模拟进程调度 功能 data.h #ifndef _Data_ ...

  4. 【操作系统】Semaphore处理吸烟者问题

    "吸烟者"问题 问题描述 问题分析 关系分析 求解思路 信号量设置 问题解决 问题描述 存在三个抽烟者和一个供应者. 每个抽烟者不停地卷烟并抽烟,烟有三种原材料:烟草.烟纸.胶水. ...

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

    经典进程同步问题 1 )生产者-消费者问题(合作互斥) 1)利用记录型信号量解决 2)利用AND型信号量解决 2)哲学家进餐问题(资源耗尽,避免死锁) 1)利用记录型信号量解决 2)利用AND型信号量 ...

  6. 操作系统经典20题总结==上岸

    面试的过程中,为了考察面试者的基础功力,除了算法以外,操作系统将会占比很大的权重,本文给大家分享我在面试过程中出现的非常高频的面试题,我基本上会从两个角度来阐述,一个是"官话",一 ...

  7. 经典进程同步问题——吸烟者问题

    吸烟者问题是为了解决"可以生产多个产品的单生产者"问题提供了一个思路. 问题描述:有三个抽烟者和一个供应者.每个抽烟者不停地卷烟抽,组成一根烟需要三种材料:烟草.纸和胶水.三个抽烟 ...

  8. 操作系统经典书籍--现代操作系统

  9. 操作系统经典独木桥问题

    问题描述 相传杭电和理工中间有一条狭窄的南北通道,该通道同一个方向行人可连续通过:当某一方向有学生过通道时,另一个方向的学生必须等待:当某一方向无学生过通道时,另外方向的学生可以过通道.(用信号量解决 ...

最新文章

  1. scrollview中嵌套listview产生冲突问题
  2. 外国人居留证申请程序
  3. Quartz.Net进阶之四:CronTrigger 详述
  4. rxjs里concatMap operators的用法
  5. 智能电视系列(4)-高通,天才与极限
  6. Alibaba之MySQL宝典_阿里巴巴内部 MySQL宝典 意外流出!极致经典,堪称数据库的天花板...
  7. 关于wordpress站点地图代码调试
  8. 读书:冯友兰的《中国哲学简史》
  9. sdi线缆标准_影片创作与未来标准监看——监视器DP-V2421使用手记
  10. 增量式pid调节方式有何优点_PID控制在变频器驱动系统中的应用
  11. 最像windows的linux系统,盘点酷似Windows的Linux发行版
  12. python︱六款中文分词模块尝试:jieba、THULAC、SnowNLP、pynlpir、CoreNLP、pyLTP
  13. odi lkm mysql_Oracle ODI系列之一(ODI知识模块)
  14. Android修行手册 - ConstraintLayout示例
  15. 【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)
  16. 计算机基础---学习笔记
  17. Python制作日历
  18. 基于pythonGUI的图形绘图及图元编辑系统
  19. Dijkstra算法正确性证明
  20. 大环套小环、小环围着大环转!

热门文章

  1. 计算机网络实践网线制作,网线怎么制作
  2. FANUC数控机床的维修 从原理开始(二)
  3. 【折腾】独立博客之「熵」
  4. 免费的java开发工具_Java那些最常用的免费开放工具,分享这15个!
  5. 在Virtual Box中安装Windows7 64位虚拟机系统
  6. 每天学日语:日语输入法教程及日文键盘分部图
  7. 考研逻辑整理 - 类比推理和归纳推理
  8. Psins代码解析之静基座仿真(test_SINS_static.m)傅科、修拉周期水平通道误差传播(test_SINS_static_verify.m)
  9. FCKeditor相关问题
  10. 音视频开发之旅(58) -H.264 帧内预测