- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统:进程同步
实验二:进程同步实验二:进程同步计科112 康岩岩 2011008142202013/4/18实验二:进程同步一.实验目的掌握基本的同步算法,理解生产者消费者模型。学习使用Windows XP中基本的同步对象,掌握相关API的使用方法。了解Windows XP中多线程的并发执行机制,实现进程的同步与互斥。二.实验属性该实验为设计性实验。三.实验仪器设备及器材普通PC386以上微机四.实验要求本实验要求2学时完成。本实验要求完成如下任务:(1)以生产者/消费者模型为依据,在Windows XP环境下创建一个控制台进程,在该进程中创建n个线程模拟生产者和消费者,实现进程(线程)的同步与互斥。学习并理解生产者/消费者模型及其同步/互斥规则;学习了解Windows同步对象及其特性;熟悉实验环境,掌握相关API的使用方法;设计程序,实现生产者/消费者进程(线程)的同步与互斥。(2)扩展任务2选1:1利用信号量机制,写出不会发生死锁的解决哲学家进程(线程)。最多允许4个同时进餐;奇:先左后右 偶:先右后左。 2利用信号量机制,写出不会发生死锁的读者写者进程(线程)。实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习报告;实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。实验后认真书写符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸和封面装订整齐,按时上交。五 实验步骤任务分析:此次试验所要解决的生产者与消费者问题,每一个生产者或一个消费者都要占有一个独立的线程。 但是生产者和消费者需要共享一个中间容器,这个容器用来存放产品。生产者生产或是消费者消费都需要以现有中间容器为条件,即同一时刻只有一个进程(生产者进程或消费者进程)能访问中间容器。在访问的过程中还要判断中间容器是否为空或者是否已满,然后做出相应的处理(释放资源锁,进入等待状态)。这中间就涉及到了同步与互斥问题。程序设计: 此次试验所使用的语言与java。进程创建工具为java 的类Thread。a.总体设计: 产品上的数据定义如下: public class Product { private int productId = 0; public Product(int productId) { this.productId = productId; } public int getProductId() { return productId; } @Override public String toString() { return Integer.toString(productId); }}生产者和消费者都作为一个独立的线程来使用,在java中,它们都需要继承于Thread类,并重写Thread类的run方法。它们的定义分别如下:生产者:public class Producer implements Runnable { /** * 生产者名称 */ private String producerName = null; /** * 产品仓库,在该对象内相当于一个指针 */ private StoreHouse storeHouse = null; public Producer(String producerName, StoreHouse storeHouse) { this.producerName = producerName; this.storeHouse = storeHouse; } public void setProducerName(String producerName) { this.producerName = producerName; } public String getProducerName() { return producerName; } public void produceProduct() { int i = 0; while (true) { i++; Product pro = new Product(i); //创建一个产品 storeHouse.push(pro); //存入仓库 System.out.println(getProducerName() + 生产了 + pro); try { Thread.sleep(1000); } catch (InterruptedException e) { return; } } } @Override public void run() { produceProduct(); } }消费者:public class Consumer imple
您可能关注的文档
最近下载
- 《家庭路由器密码修改.doc VIP
- 光伏施工电站施工质量管理体系及保证措施.docx VIP
- 退换货应急服务措施及保障.docx VIP
- 医疗器械公司组织机构图和部门设置说明【模板范本】.docx
- 2020年最新小学数学教师编制考试新课标测试题及答案(三).docx VIP
- 拼多多法律顾问岗面试题库参考答案和答题要点.docx VIP
- 腾讯法律顾问岗面试题库参考答案和答题要点.docx VIP
- 小米法律顾问岗面试题库参考答案和答题要点.docx VIP
- 网易法律顾问岗面试题库参考答案和答题要点.docx VIP
- 惠普HP DeskJet Ink Advantage Ultra 4800 系列参考指南.pdf
文档评论(0)