- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
阅读者写入者问题的java实现.doc
阅读者-写入者问题的java实现
完成人::计本022班 XXXXXXXXX
报告日期: 2004.10.21
小组成员责任分配情况:
类Cushion, MainTest XXXXXXX负责编写
类Reader, Writer, Critical, 实验报告XXX负责
程序调试三人共同完成
一.报告主要内容
1.设计思路: (1).Critical类的功能主要是保存读写的互斥量,初始时将互斥量置零.
Cushion类的功能是作为不能被执行的读写者的缓冲区使用
Reader类创建一个读者线程
Writer类创建一个写者进程
(2)先随机产生一个读者/写者
(3)检测读写互斥量,读者在写者互斥量为0时才可以被创建,否则进入等待队列,若该队列已满则读者离开;写者大抵相类似,不同的是写者进入之前需要检测读者和写者两个互斥量.
(4)在创建读者/写者之时,由构造函数用start()启动线程,执行中以sleep()模拟操作.
(5)在预设的来者次数结束后,检测等待的读写者队列,分别凊空..
2.主要数据结构:等待队列由数组来实现
3.主要代码结构(C++/Java:类图,类说明;C:函数调用图,函数原型,说明)
本试验用java完成.完成工具为JCreator 类结构如下图:
4. 对难懂的代码段分析说明
在类Cushion中,min()函数的功能是返回进入队列最早的读写者序号.delete()的功能则是在队列中删除已经出去的读写者序号.
在类读者中,用了一个局部变量numu,其作用是保存静态变量的值,让读者的到达和离去序号一致,不会受到静态数据变化的影响;在类写者中也有起类似作用nunu变量.
构造函数的多态表示是由于两次创建读写者时间不同(一次是开始时创建,一次是凊空的需要),为了让序号一致,所以调用不同的构造函数.
二.实验结果
1.基本数据
(1)源程序代码行数: 206
(2)完成实习投入的时间(小时数)每人15小时左右,
(3)小组讨论次数:四次
2.测试数据(输入)设计:数据是随机产生的,循环次数由一个为cout的局部变量控制
3.测试结果(输出)分析:
左图是读者先来的结果 右图是写者先来的结果
下面选取写者先到情况进行分析: 写者0到达,读者0和1到达进入队列等待,写者1和2到达相继进入写者等待队列,读者2到达,写者3到达都相继进入队列等待,随后读者3写者4.5.6都进入队列
三.实验体会
1.实验过程中遇到的问题及解决过程
错误分析:因为用布尔型互斥量来标志读者存在,所以当读者0执行时Rmutex置真,此时就可以让读者进而写者不进,后续读者进入,但不好的是,此时读者出的话,就会无意中修改Rmutex的值使其为假,此时来一个写者的话,就会误认为此时没有读者在里面而进入,从而错误.
解决方法:我们改变了设置布尔值作为互斥量的办法,改为用一个整型值作为计数,多一个读者时则加一,读者操作完成则减一,这样就能保证在读者为走光之前都没有写者能够执行.
在数组的边界控制上出的问题,因为size和数组并没有直接挂钩,所以当size超标时没有问题,但一旦应用于数组时则报错,
解决方法:严格控制size值的大小,不让它越界.
2.实验体会和收获
(1)先说好的一面,此次试验充分考察了我们编程实现现实问题的能力,对操作系统的相关知识也有了进一步的认识;
(2)不足的地方在于:在编程方面,对于有计划的编写代码还缺乏经验,所以程序条理性比较差,在运用java编程的时候,对于语言相关的API的熟悉程度还不够,因此效率低下;在人员磨合上我们做的也实在不够,不能充分发挥小组人员的优势,常常需要比编程更多的时间来说明彼此的代码,也影响了进度.另外,由于我们错会了试验报告的意思,没有令读写操作全部从文件中读出再执行,作为补救,我们将sleep()时间的产生由读文件来产生.
参考文献目录
计算机操作系统 汤子瀛 等著
Java编程思想 Bruce·eckel著
问题求解与编程概念 Maureen Spra
您可能关注的文档
最近下载
- 2025-2026学年人教版英语八年级上册UNIT 8 单元综合评估卷(含答案及听力原文,无听力音频).doc VIP
- 常用电工仪器仪表使用方法PPT课件.pptx VIP
- 2025年广东省华医网公需课考题答案—人工智能赋能制造业高质量发展.docx VIP
- 基于核心素养的初中生物实验教学设计研究报告教学研究课题报告.docx
- 物流园安全生产三项制度(安全生产责任制、制度、操作规程)汇编.pdf VIP
- 2019年山东省广播电视技术能手竞赛(网络安全)答案.doc VIP
- (9月3日)铭记历史,吾辈自强——纪念抗日战争胜利80周年初中主题班会课件.pptx VIP
- 07 保护及故障信息管理子站技术规范书(通用).doc
- 2025-2026学年小学信息科技湘教版2024三年级上册-湘教版(2024)教学设计合集.docx
- 第一届全国技能大赛贵州选拔赛砌筑项目技术文件1.docx VIP
文档评论(0)