课程设计生产者消费者问题模板

上传人:人*** 文档编号:511925347 上传时间:2023-12-22 格式:DOC 页数:11 大小:128KB
返回 下载 相关 举报
课程设计生产者消费者问题模板_第1页
第1页 / 共11页
课程设计生产者消费者问题模板_第2页
第2页 / 共11页
课程设计生产者消费者问题模板_第3页
第3页 / 共11页
课程设计生产者消费者问题模板_第4页
第4页 / 共11页
课程设计生产者消费者问题模板_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《课程设计生产者消费者问题模板》由会员分享,可在线阅读,更多相关《课程设计生产者消费者问题模板(11页珍藏版)》请在金锄头文库上搜索。

1、 操作系统课程设计(一号黑体加粗)用多进程同步方法解决生产者-消费者问题 (小二黑体加粗)院 系: 信息工程学院 班 级: 信工(2)班 学 号: XXXXXXXX 姓 名: XX 同 组 者: 本人 时 间: 2011/12/8 目录(小二黑体加粗)操作系统课程设计(一号黑体加粗)1目录(小二黑体加粗)2一、题目:(标题2,即三号黑体加粗)2二、设计目的:3三、总体设计思想概述:3四、说明:3五、设计要求:3六、设计方案:3七、流程图:3八、运行结果4九 源程序6十、总结10十一、参考文献11一、题目:(标题2,即三号黑体加粗)用多进程同步方法解决生产者-消费者问题。二、设计目的:通过研究L

2、inux 的进程机制和信号量实现生产者消费者问题的并发控制。三、总体设计思想概述:1、 生产者消费者问题是一种同步问题的抽象描述。2、 计算机系统中的每个进程都可以消费或生产某类资源。当系统中某一进程使用某一资源时,可以看作是消耗,且该进程称为消费者。3、 而当某个进程释放资源时,则它就相当一个生产者。四、说明:有界缓冲区内设有20个存储单元,放入/取出的数据项设定为1-20这20个整型数。五、设计要求:1、每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容,当前指针位置和生产者/消费者进程的标识符。2、生产者和消费者各有两个以上。3、多个生产者或多个消费者之间须有共享对缓

3、冲区进行操作的函数代码。六、设计方案: 1、生产者仅仅在仓储未满时候生产,仓满则停止生产。 2、消费者仅仅在仓储有产品时候才能消费,仓空则等待。 3、当消费者发现仓储没产品可消费时候会通知生产者生产。 4、生产者在生产出可消费产品时候,应该通知等待的消费者去消费。 5、此模型将要结合java.lang.Object的wait与notify、notifyAll方法来实现以上的需求。七、流程图: 开始ProduceWait BufferWait ProductsConsume结束While produceWhile consume八、运行结果1、截图一: 生产者线程开始生产、消费者线程随后消费及生

4、产者或消费者执行生产操作后缓冲区当前状态的截图:2、截图二: 缓冲区已满,信号量empty0生产者线程进入等待队列的截图:上图的辅助解释图:缓冲区的20个存储单元满时缓冲区的状态的截图:3、截图三: 生产者线程ProducerThread_0完成自己的任务后,该线程撤销的截图: 4、截图四: 消费者执行消费操作后的缓冲区的状态的部分截图:5、截图五: 生产消费完毕的截图:九 源程序/* * (#)ProducerConsumer.java * * * author * version 1.00 2011/12/12 */class Buffer / 有界缓冲区int array = new i

5、nt21; / 设置缓冲区的大小为20个存储单元int full = 0; / 缓冲区里产品的数目 初始值为0int empty = 20; / 缓冲区里还剩空位置的数目 初始值为20 /int empty = array.length;public synchronized void push(int i) / 生产数据项操作,即P操作(通过syschoronized实现有节缓冲区的互斥操作) while (empty = 0) try System.out.println(缓冲区已满,生产者线程进入等待队列);this.wait(); catch (InterruptedException

6、 e) e.printStackTrace(); notify(); System.out.println(Thread.currentThread().getName() + 生产: +i);full+;empty-;arrayfull = i; / 送一个产品到有界缓冲区System.out.println(full:+full+tempty:+empty+t生产者线程执行操作后,缓冲区当前的数据为:);for (int j = 1; j = full; j+) System.out.print(arrayj+t );System.out.println();public synchron

7、ized void pop() / 消费数据项操作,即V操作(通过syschoronized实现有节缓冲区的互斥操作)while(full = 0) try System.out.println(缓冲区里没有供消费的产品,消费者线程进入等待队列。);this.wait(); catch (InterruptedException e) e.printStackTrace();notify();System.out.println(Thread.currentThread().getName() + 消费: + arrayfull);empty+;full-;System.out.println

8、(消费者线程执行操作后,缓冲区当前的数据为:);for (int j = 1; j = full; j+) System.out.print(arrayj+t);System.out.println(); class Producer implements Runnable / 实现Runnble的生产者private Buffer bf ;Producer(Buffer bf) this.bf = bf;public void run() for(int i=1; i=20; i+)bf.push(i);try Thread.sleep(int) (Math.random() * 2000)

9、; catch (InterruptedException e) e.printStackTrace();System.out.println(Thread.currentThread().getName()+ 线程完成自己的任务,该线程消亡!);class Consumer implements Runnable / 实现Runnble的消费者private Buffer bf ;Consumer(Buffer bf) this.bf = bf;public void run() for(int i=1; i=20; i+) bf.pop();try Thread.sleep(int) (M

10、ath.random() * 4000); catch (InterruptedException e) e.printStackTrace();System.out.println(Thread.currentThread().getName()+ 线程完成自己的任务,该线程消亡!);public class ProducerConsumer public ProducerConsumer() public static void main(String args) Buffer bf = new Buffer(); / 初始化有界缓冲区Producer p = new Producer(b

11、f);Consumer c = new Consumer(bf); / new生产者Thread thread_0 = new Thread(p);Thread thread_1 = new Thread(p);Thread thread_2 = new Thread(p);thread_0.setName(ProducerThread_0);thread_1.setName(ProducerThread_1);thread_2.setName(ProducerThread_2);Thread thread_3 = new Thread(c);Thread thread_4 = new Thr

12、ead(c);thread_3.setName(ConsumerThread_0);thread_4.setName(ConsumerThread_1);System.out.println(生产消费模拟开始:);thread_0.start();thread_1.start();thread_2.start();thread_3.start();thread_4.start(); 十、总结对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的。就像学习每一门编程语言一 样,Hello World!都是最经典的例子。在此之前,我们学习过java中的多线程机制,可是那时候的线程机制是简单且较为容易理解的,但是这次实验不一样,它要求用多个线程,于是我很长一段时间都在犯迷糊,不知道如何下手,花了很多时间去查阅资料,从开始的一个线程,调试通过,然后试着增加一个线程,慢慢地调试,最终步履蹒跚的完成了这次实验,从这次编程中我学到了很多知识,原来看似明白的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号