




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1. 基本信息 实践题目:事件对象实现P、V操作并解决读写者问题 完成人:班级:07062301姓名:陈杨学号:0706230101 报告日期 :2011年1月5日2. 实践内容简要描述 实践目标 1.掌握事件对象的使用方法2. 理解P、V操作的内部机制及读者-写者问题的实现方法。 实践内容用Win32提供的同步对象实现P、V操作,并使用它们解决读者-写者问题利用事件机制模拟多值信号量。算法如下:binary-semaphore S1, S2; / initializtion: S1 = 1, S2 = 0int C; / initializtion: the count of recourcewait(): Wait(S1); C-; if(C 0) signal(S1); wait(S2); signal(S2);signal(): wait(S1); C+; if(C thread_infon_thread.serial;inFilethread_infon_thread.entity;inFilethread_infon_thread.delay;inFilethread_infon_thread+.persist;inFile.get(); /end whileinFile.close();for( int i = 0; i s1, INFINITE);myS-c-;if(myS-c s1);WaitForSingleObject(myS-s2, INFINITE);SetEvent(myS-s1);void signal(MySemaphore* myS)WaitForSingleObject(myS-s1, INFINITE);myS-c+;if(myS-c s2);elseSetEvent(myS-s1);/ reader priority - reader thread/ p: reader thread info/DWORD WINAPI RP_ReaderThread(void* p)DWORD m_delay;DWORD m_persist;int m_serial;/get info froam param_serial = (ThreadInfo*) (p) - serial;m_delay = (DWORD) (ThreadInfo*)(p) - delay*INTE_PER_SEC);m_persist = (DWORD) (ThreadInfo*)(p) - persist*INTE_PER_SEC);Sleep(m_delay);printf(Reader thread %d sents the reading require .n,m_serial);wait(&ReaderS);if(readcount = 0)wait(&WriterS);readcount+;signal(&ReaderS);/ read fileprintf(Reader thread %d begins to read file.n,m_serial);Sleep(m_persist);/exit threadprintf(Reader thread %d finished reading file.n,m_serial);wait(&ReaderS);readcount-;if(readcount = 0)signal(&WriterS);signal(&ReaderS);return 0;/ Reader priority - writer thread/ p: writer thread info/DWORD WINAPI RP_WriterThread(void* p)DWORD m_delay;DWORD m_persist;int m_serial;/get info froam param_serial = (ThreadInfo*) (p) - serial;m_delay = (DWORD) (ThreadInfo*)(p) - delay*INTE_PER_SEC);m_persist = (DWORD) (ThreadInfo*)(p) - persist*INTE_PER_SEC);Sleep(m_delay);printf(Writer thread %d sents the writing require .n,m_serial);/ wait resourcewait(&WriterS);/ write to the fileprintf(Writer thread %d begins to write to the file.n,m_serial);Sleep(m_persist);/exit threadprintf(Writer thread %d finished Writing to the file.n,m_serial);/release resourcesignal(&WriterS);return 0;3. 实践结果 基本数据 : 源程序代码行数 :256 完成实践投入的时间(小时数):5 资料查阅时间:1.5 编程调试时间:3.5 测试数据设计 “ex5.dat”中测试数据为:1 R 3 52 W 4 53 R 5 24 R 6 55 W 5 3 测试结果分析 待所有读进程执行完毕后写进程才开始一一执行,结果正确。4. 实践体会 实践过程中遇到的问题及解决过程 在调试时,一开始总会出现某个进程sents require的信息重复出现两次,但该线程只执行过一次的现象,调整显示代码的位置得不到正确的结果。后将读写进程函数由void RP_ReaderThread(void* p); void RP_WriterThread(void* p);改为DWORD WINAPI RP_ReaderThread(void* p);DWORD WINAPI RP_WriterThread(void* p);并在函数体最后加上return 0语句。该问题顺利解决。 实践体会和收获 通过此次实验,我学会了事件对象的使用方法,并深入了解了P、V算法的机制及用其解决读着-写者问题的实现方法。同时我也锻炼了自己的编程能力。5. 参考文献 1汤子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六年级体育上册 第二十四课 小排球说课稿
- 塑料厂包装材料管理细则
- 第2课《说和做-记闻一多先生言行片段》说课稿 2025-2026学年统编版语文七年级下册
- 5.1.6 鸟(第一课时)说课稿-2024-2025学年人教版生物八年级上册
- 6.3 向心加速度 教学设计-2024-2025学年高一下学期物理人教版(2019)必修第二册
- 《 虞美人》教学设计 2023-2024学年统编版语文高中必修上册
- 第7课 隋唐制度的变化与创新 教学设计-2023-2024学年高一上学期统编版(2019)必修中外历史纲要上册
- 2025江苏苏州市市级机关遴选公务员18人笔试备考题库及答案解析
- 吉林省四平市2025-2026学年七年级上学期第一次检测历史试卷(含答案)
- 企业员工劳动合同签订与绩效考核标准
- 借款合同中国农业银行担保借款合同3篇
- 雨水管网扩容改造工程建设方案
- 2025年国家电网招聘之电网计算机考试题库含答案(精练)
- 苏教版一年级数学上册月考测试卷(一)(范围:游戏分享至第一单元)(含答案)
- 2025至2030中国电镀工业园区行业发展趋势分析与未来投资战略咨询研究报告
- 2025-2026学年度武汉市部分学校高三年级九月调研考试 英语试卷(含答案)
- 2025秋大象版(2024)小学科学三年级上册《测量风向》教学设计
- 不锈钢栏杆施工全流程方案
- 国企人力资源岗笔试模拟试题及参考答案
- 遵守规则课件-2025-2026学年统编版道德与法治八年级上册
- 全科医学(副高)高级职称考试题库及答案
评论
0/150
提交评论