下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1. 基本信息实践题目:事件对象实现P、V操作并解决读写者问题完成人:班级:07062301姓名:陈杨学号:0706230101报告日期:20RR年1月5日2. 实践内容简要描述实践目标1掌握事件对象的使用方法2理解P、V操作的内部机制及读者-写者问题的实现方法。 实践内容-写者问题用Win32提供的同步对象实现P、V操作,并使用它们解决读者利用事件机制模拟多值信号量。算法如下:bin arR-semaphoreS1,S2;/i ni tializtio n:S1=1,S2=0in tC;/i nitializtio n: theco un tofrecourcewait():Wait(S1)
2、;C_;if(C0)sig nal(S1); wait(S2);sig nal(S2);sig nal():wait(S1);C+;if(C=0)sig nal(S2);elsesig nal(S1);读者-写者问题算法如下:Writer:wait(WmuteR);/dowriti ngsig nal(WmuteR);Reader: wait(RmuteR); if(Rcou nt=0) wait(WmuteR);Rcoun t+;sig nal(RmuteR);/doreadi ngwait(RmuteR);Rcoun t-;if(Rcou nt=0)sig nal(WmuteR);sig
3、nal(RmuteR);设计思路利用事件对象实现P、V操作主要数据结构in treadco un t=0;in twriteco un t=0;structMRSemaphoreHANDLEs1,s2;intc;MRSemaphoreReaderS;MRSemaphoreWriterS;structThreadI nfoint serial;char en titR;double delaR;double persist;主要代码结构及分析/ReaderPrioritRfuctio n/file:file name/voidReaderPrioritR(charRfile)DWORD n_th
4、read=0;DWORDthreadD;DWORDwait_for_all;ini tMRSem aphore(&ReaderS,1);ini tMRSe map hore( &WriterS,1);readco un t=0;/in itreaderco unt/TreadObjectArraRHANDLEh_ThreadMAR_THREAD_NUM;ThreadI nfothreadn foMAR_THREAD_NUM;ifstreami nFile;inF ile.ope n( file);/ope nfileprin tf(ReaderPrioritR:nn);while(i nFil
5、e)/readeverRreader/writeri nfoin Filethread _in fon_thread.serial;in Filethread _in fon_thread.e ntitR;in Filethread _in fon_thread.delaR;in Filethread _in fon_thread+.persist;in File.get();/en dwhilein File.close();for(i nti=O;is1,INFINITE);mRS-c-;if(mRS-cs1);WaitForSi ngleObject(mRS-s2,INFINITE);S
6、etEve nt(mRS-s1);voidsig nal(MRSem aphoreRmRS)WaitForSi ngleObject(mRS-s1,INFINITE);mRS_c+;if(mRS-cs2);elseSetEve nt(mRS-s1);/readerprioritR-readerthread/p:readerthreadi nfo/DWORDWINAPIRP_ReaderThread(voidRp)DWORDm_delaR;DWORDm_persist;in tm_serial;/geti nfofroamparam_serial=(ThreadI nfoR)(p)-serial
7、;m_delaR=(DWORD)(ThreadI nfoR)(p)-delaRRINTE_PER_SEC); m_persist=(DWORD)(ThreadI nfoR)(p)-persistRINTE_PER_SEC); Sleep(m_delaR);prin tf(Readerthread%dse ntsthereadi ngrequire.n,m_serial);wait(&ReaderS);if(readco un t=0)wait (&WriterS);readco un t+;sig nal(&ReaderS);/readfileprin tf(Readerthread%dbeg
8、i nstoreadfile.in ,m_serial);Sleep(m_persist);/eRitthreadprin tf(Readerthread%dfi ni shedreadi ngfile.n ,m_serial); wait(&ReaderS);readco un t-;if(readco un t=0)sig nal(&WriterS);sig nal(&ReaderS);return0;/ReaderprioritR-writerthread/p:writerthreadi nfo/DWORDWINAPIRP_WriterThread(voidRp)DWORDm_delaR
9、;DWORDm_persist;in tm_serial;/geti nfofroamparam_serial=(ThreadI nfoR)(p)-serial; m_delaR=(DWORD)(ThreadI nfoR)(p)-delaRRINTE_PER_SEC); m_persist=(DWORD)(ThreadI nfoR)(p)-persistRINTE_PER_SEC);Sleep(m_delaR);prin tf(Writerthread%dse ntsthewriti ngrequire.n,m_serial); /waitresourcewait (&WriterS);/wr
10、itetothefileprin tf(Writerthread%dbegi nstowritetothefile.n,m_serial); Sleep(m_persist);/eRitthreadprin tf(Writerthread%dfi ni shedWriti ngtothefile.n,m_serial); /releaseresourcesig nal(&WriterS);return0;3. 实践结果基本数据:源程序代码行数:256完成实践投入的时间(小时数):5资料查阅时间:1.5编程调试时间:3.5测试数据设计eR5.dat”中测试数据为:1R352W453R524R65
11、5W53测试结果分析待所有读进程执行完毕后写进程才开始一一执行,结果正确。4. 实践体会实践过程中遇到的问题及解决过程 在调试时,一开始总会出现某个进程sentsrequire的信息重复出现两次,但该线程只执行过一次的现象,调整显示代码的位置得不到正确的结果。后将读写进程函数由voidRP_ReaderThread(voidRp);voidRP_WriterThread(voidRp);改为DWORDWINAPIRP_ReaderThread(voidRp);DWORDWINAPIRP_WriterThread(voidRp);并在函数体最后加上return。语句。该问题顺利解决。实践体会和收获通过此次实验,我学会了事件对象的使用方法,并深入了解了P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版港口物流中心运营合同
- 2025年度安全生产标准化咨询服务及现场指导合同3篇
- 2024生物质锅炉余热回收利用项目合作协议3篇
- 2025年度大理石地暖系统设计与施工合同3篇
- 2024软件系统销售合同系统购买合同
- 2024物业企业服务能力提升与市场拓展合作协议3篇
- 敦煌壁画与文创知到智慧树章节测试课后答案2024年秋酒泉职业技术学院
- 森林防火施工员聘用协议
- 建筑工程节能改造合同
- 别墅锌钢栏杆安装施工协议
- 2025年度爱读书学长主办的读书挑战赛组织合同
- 2024年沧州经济开发区招聘社区工作者笔试真题
- 零碳智慧园区解决方案
- 2025年林权抵押合同范本
- 2024年北师大版四年级数学上学期学业水平测试 期末卷(含答案)
- 2024年高考物理一轮复习讲义(新人教版):第七章动量守恒定律
- 浙江省宁波市慈溪市2023-2024学年高三上学期语文期末测试试卷
- 暨南大学《微观经济学》2023-2024学年第一学期期末试卷
- 草学类专业生涯发展展示
- 法理学课件马工程
- 《玉米种植技术》课件
评论
0/150
提交评论