生产者消费者算法实现

生产者消费者算法实现

ID:47448246

大小:300.00 KB

页数:17页

时间:2019-08-24

生产者消费者算法实现_第1页
生产者消费者算法实现_第2页
生产者消费者算法实现_第3页
生产者消费者算法实现_第4页
生产者消费者算法实现_第5页
资源描述:

《生产者消费者算法实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、.课程设计说明书题目:生产者与消费者算法模拟院系:计算机科学与工程专业班级:信息安全(xxxx)班学号:201130xxxx学生姓名:xxxx指导教师:xxxx2013年xx月xx日..xxxx大学课程设计(论文)任务书计算机院系计算机教研室学号20113xxxxx学生姓名xxxx专业(班级)xxxxx设计题目生产者与消费者算法模拟设计技术参数(1)系统作业或进程的数目;(2)系统资源的种类和数目;(3)系统作业或进程的对每类资源的最大需求数目;(4)系统作业或进程已分配的资源数目。设计要求(1)检查系统安全状态:根据系统作业或进

2、程的对每类资源的最大需求数目、已分配的资源数目等计算是否存在安全序列。(2)检查系统是否可以继续某个进程资源分配请求。工作量要求设计说明书的字数在3000字以上。工作计划2012.11.25-11.26根据课程设计的要求,查找相关资料,完成需求分析;2012.11.26-11.27进行系统的概要设计;2012.11.27-11.28进行系统的详细设计和源代码的书写;2013.11.29-11.30对系统进行调试分析,写出课程设计报告。参考资料[1]CayS.Horstmann,GaryCornell编著.JAVA核心技术卷I.北京

3、:机械工业出版社,2008.[2]郑莉编著.Java语言程序设计(第二版).北京:清华大学出版社,2011.[3]吕国英等编著.算法设计与分析.北京:清华大学出版社,2009.[4]马小军等编.软件工程项目案例与实践指导.北京:清华大学出版社,2013.[5]汤子瀛等编著.计算机操作系统.西安:西安电子科技大学出版社,2011.指导教师签字教研室主任签字2012年xx月xx日..指导教师评语:成绩:指导教师:年月日xxxx大学课程设计(论文)成绩评定表..目录1.问题描述11.1目的11.2设计要求12.需求分析13.概要设计13

4、.1程序流程图14.详细设计24.1程序框架24.1.1生产者与消费者的父类24.1.2生产者类54.1.3消费者类64.1.4主程序入口64.2基本算法分析74.2.1wait(mutex)与signal()数值信号74.2.2isBufferEmpty()与isBufferFull()信号74.2.3produce()存数方法与consume()取数方法85.调试分析105.1不启动生产者线程测试结果分析105.2不启动消费者线程测试结果分析116.用户手册117.测试结果128.设计体会13参考文献13附录13..1.问题描

5、述1.1目的掌握信号的使用方法和P、V操作的定义,掌握使用P、V操作实现进程之间同步与互斥的方法,加深对进程同步互斥概念的理解。1.2设计要求设计一程序,由一个进程创建三个子进程,三个子进程一个是生产者进程,两个是消费者进程,且要求:l父子进程都使用父进程创建的共享存储区进行通信,由生产者进程将一个数组中的十个数值发送到由5个缓冲区组成的共享内存中;l两个消费者进程轮流接收并输出这十个数值,同时将两个消费者进程读出的数值进行累加求各和。l考虑生产者进程生产的速度和消费者进程速度。2.需求分析生产者--消费者问题是一个著名的进程同步

6、问题。既然有进程间的同步,也就必将涉及到进程之间的互斥与通信问题,对于这个问题的解决有着很强的现实意义。它的现实意义在于可以类比到计算机中对于临界资源的互斥共享。生产者与消费者就好比是对计算机临界资源访问的程序或用户,而临界资源如打印机、磁带机等设备。3.概要设计3.1程序流程图说明:图3.1程序流程图所示,首先生产者与消费者线程创建,便就去访问缓冲区。对于生产者若缓冲区没有被其他线程访问,且缓冲区未满则生产数据存放到缓冲区,若其中有一条件没有满足则生产者线程进入阻塞状态。而对于消费者同样也需要缓冲区没有被其他线程访问,但同时要求

7、缓冲区未空才能从缓冲区取数据,若其中有一个条件为满足则同样进入阻塞状态。..“生产者”线程创建“消费者”阻塞“生产者”向缓冲区放入数据否是否有线程访问缓冲区否是是“消费者”或“生产者”阻塞缓冲区是否满否是否有线程访问缓冲区是缓冲区是否空否“消费者”线程创建“生产者”阻塞“消费者”从缓冲区中取数图3.1程序流程图4.详细设计4.1程序框架4.1.1生产者与消费者的父类publicclassSuperThreadextendsJPanel{//定义缓冲区的读写锁privateLockbufferLock;//共享缓冲区publicst

8、aticIntBufferbuffer=IntBuffer.allocate(5);//生产者数组publicintarray[]={1,5,6,9,8,11,13,10,7,3};//生产者执行的次数publicstaticintcount=0;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。