课程设计-生产者消费者问题.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计-生产者消费者问题

操作系统课程设计(一号黑体加粗) 用多进程同步方法解决生产者-消费者问题 院 系:医学信息工程学院 班 级:2009级信息工程(2)班 学 号:20090702065 姓 名:宋冰冰 同 组 者: 时 间:2011-12-1 目录 一、题目: 3 二、设计目的: 3 三、总体设计思想概述: 3 四、说明: 3 五、设计要求: 3 六、设计方案: 3 七、流程图: 4 八、运行结果 4 九、源程序 7 十、总结 15 十一、参考文献 15 一、题目:(标题2,即三号黑体加粗) 用多进程同步方法解决生产者-消费者问题。 二、设计目的: 通过研究Linux 的进程机制和信号量实现生产者消费者问题的并发控制。 三、总体设计思想概述: 生产者—消费者问题是一种同步问题的抽象描述。 计算机系统中的每个进程都可以消费或生产某类资源。当系统中某一进程使用某一资源时,可以看作是消耗,且该进程称为消费者。 而当某个进程释放资源时,则它就相当一个生产者。 四、说明: 有界缓冲区内设有20个存储单元,放入/取出的数据项设定为1-20这20个整型数。 五、设计要求: 1、每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容,当前指针位置和生产者/消费者进程的标识符。 2、生产者和消费者各有两个以上。 3、多个生产者或多个消费者之间须有共享对缓冲区进行操作的函数代码。 六、设计方案: 用Java语言编写程序 抽象化生产者与消费者之间的关系,然后实例化,分别定义如下类:  ⑴、生产者类 class Producer  ⑵、消费者类 class Consumer  ⑶、产品类 class Product  ⑷、缓冲区类 class Buffer  ⑸、生产者与消费者的类 class Producer_Consumer 2、在main函数中多定义多个生产者与消费者线程Thread,并启动线程。 3、使用synchronized实现线程同步 4、Runnble类的接口与Thread类的继承。 5、重载父类run方法,即重新构造run方法 七、流程图: 八、运行结果 1、截图一: 截图二: 3、截图三: 4、截图四: 5、截图五: 九、源程序 public class Producer_Consumer{ public static void main(String[] args){ Buffer buffer = new Buffer(); //创建Buffer类的对象 Producer p = new Producer(buffer); //创建Producer类的对象 Consumer c = new Consumer(buffer); //创建Consumer类的对象 /*下面的是用来模拟多线程,这样总共有三个生产者,三个消费者*/ new Thread(p,生产者1).start(); //启动生产者线程1 new Thread(c,消费者1).start(); //启动消费者线程1 new Thread(p,生产者2).start(); //启动生产者线程2 new Thread(c,消费者2).start(); //启动消费者线程2 new Thread(p,生产者3).start(); //启动生产者线程3 new Thread(c,消费者3).start(); //启动消费者线程3 } } /**定义产品类*/ class Product{ int product = 0; //定义一个变量表示产品 Product(int product){ this.product = product; } } /**定义缓冲区类*/ class Buffer{ int Count = 0; //定义一个变量,表示缓冲区放满的数目 Product[] Products = new Product[20]; //创建20个缓冲区,用来放产品 /**用synchronized来实现同步*/ public synchronized

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档