




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
生产者 消费者 include include include struct PCB int flag 1 为生产者 2 为消费者 int numLabel typedef struct QNode PCB data 数据域 struct QNode next 指针域 QNode QueuePtr typedef struct QueuePtr front 队头指针 QueuePtr rear 队尾指针 LinkQueue typedef struct LNode QueuePtr data struct LNode next LNode LinkList void QueueInit LinkQueue Q front next NULL void LinkListInit LinkList void EnQueue LinkQueue Q rear next p Q rear p QueuePtr DeQueue LinkQueue Q front next p next if Q rear p Q rear Q front return p void outqueue LinkQueue Q front next p next if Q rear p Q rear Q front void LinkListInsert LinkList LinkList q LinkList malloc sizeof LNode while p next p q data e q next NULL p next q void processproc LinkQueue cout processNum for int i 0 i processNum i cout 输入第 i 1 pcb flag 输入进程的种类 pcb numLabel i 1 进程序号赋值 QueuePtr p QueuePtr malloc sizeof QNode p data pcb EnQueue Q p bool HasElement LinkQueue Q 判断队列是否为空 if Q front Q rear return 0 else return 1 int ProduceRun int return 1 return 0 void DisPlay LinkQueue Q 打印队列 QueuePtr p Q front while p next cout 进程 next data numLabel next void main int BufferSize 设置缓冲区大小 cout BufferSize int full 0 当前缓冲区中的进程数目 int temp 1 LinkList over 用于收集已经运行结束的进程 LinkListInit over LinkQueue ReadyQueue 就绪队列 LinkQueue ProducerWaitQueue 生产者等待队列 LinkQueue ConsumerWaitQueue 消费者等待队列 初始化 QueueInit ReadyQueue QueueInit ProducerWaitQueue QueueInit ConsumerWaitQueue while temp 死循环 processproc ReadyQueue 创建进程进入就绪队列 bool element HasElement ReadyQueue 判断队列是否为空 while element 当它不是空的 cout 进程 next data numLabel next data flag 1 如果它是一个生产者 cout 生产者 endl if ProduceRun full BufferSize 1 判断缓存区是否还有空间 cout 进程 next data numLabel 执行完毕 endl LinkListInsert over DeQueue ReadyQueue 运行结束 进入 over 链 表 if HasElement ConsumerWaitQueue ConsumeRun full BufferSize outqueue ConsumerWaitQueue if HasElement ProducerWaitQueue 检查生产者等待队列 激活队列 中的进程进入就绪队列 EnQueue ReadyQueue DeQueue ProducerWaitQueue else if ProduceRun full BufferSize 0 就绪队列出一个元素 进入生 产者等待队列 EnQueue ProducerWaitQueue DeQueue ReadyQueue else 如果它是一个消费者 cout 消费者 endl if ConsumeRun full BufferSize 1 判断缓存区是否存在进程 LinkListInsert over DeQueue ReadyQueue 运行结束 进入 over 链 表 if HasElement ConsumerWaitQueue 检查消费者等待队列 激活 队列中的进程进入就绪队列 EnQueue ReadyQueue DeQueue ConsumerWaitQueue if HasElement ProducerWaitQueue ProduceRun full BufferSize outqueue ProducerWaitQueue else if ConsumeRun full BufferSize 0 若没有进程 则进入消费者等 待队列 EnQueue ConsumerWaitQueue DeQueue ReadyQueue 输出就绪队列 element HasElement ReadyQueue if HasElement ReadyQueue cout 就绪队列中有下列进程 endl DisPlay ReadyQueue else cout 就绪队列里面没有进程 endl 输出生产者等待队列 if HasElement ProducerWaitQueue cout 生产者等待队列中有下列进程 endl DisPlay ProducerWaitQueue else cout 生产者等待队列中没有进程 end
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省武城县第二中学2026届高三化学第一学期期末联考模拟试题含解析
- 贵州省沿河土家族自治县2025年上半年事业单位公开遴选试题含答案分析
- 2026届吉林省长春汽车经济技术开发区第六中学高二化学第一学期期末学业质量监测试题含答案
- 智能停车导航辅助系统开发与测试-洞察及研究
- 药物联合溶石方案-洞察及研究
- 铁生锈的科学说课课件
- 2025年初心理学测试题及答案
- 知识付费产品培训课件
- 磺胺多辛绿色溶剂系统-洞察及研究
- 墙面喷涂机器人控制-洞察及研究
- 乏力诊治与管理专家共识解读 2
- 2025亚洲杯男篮+《热血征程砥砺前行》课件-2025-2026学年高中励志主题班会
- 2025-2030牛结核病防控技术进展与行业影响分析报告
- GB/T 45817-2025消费品质量分级陶瓷砖
- JJG 693-2011可燃气体检测报警器
- 学校安全隐患排查整治表
- 预测分析:技术、模型与应用 - SAP Predictive Analytics
- 教务处作业检查记录表
- 四川省扶贫和移民工作局移民安置独立评估细则-范文
- 低压电工实操演示
- 工程项目管理课程设计实例
评论
0/150
提交评论