已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 恒美智造手持拉曼光谱仪产品知识图谱报告书
- 城中村改造项目初步设计
- 2026年网络直播设备租赁公司租赁业务台账管理制度
- 2026年蔬菜种植公司现金收支与库存现金管理制度
- 2026年蔬菜种植公司农产品质量安全追溯管理制度
- 2026年能源加工公司内部审计工作管理制度
- 城市更新背景下的绿色建筑设计与施工标准
- 2025湖北宜昌市远安县财政局招聘投资评审政府雇员和村级财务代理会计4人易考易错模拟试题(共500题)试卷后附参考答案
- 生物科技在农业种植领域的应用前景
- 2025浙江丽水市智汇人力资源服务中心限公司招聘派遣丽水市水利局工作人员2人易考易错模拟试题(共500题)试卷后附参考答案
- 彩色陶瓷颗粒地面铺设施工规范
- 叉车证理论考试模拟试题大全及答案
- 江苏省盐城市五校联考2025-2026学年高一上学期10月第一次联考试题化学
- 重庆十八中学2026届九上物理期中监测试题含解析
- 国航校招笔试题目及答案
- 南宁市2026届高中毕业班(高三)10月摸底测试语文试卷(含答案及解析)
- 车载光网络的新架构与技术
- 运动馆安全培训内容课件
- 全过程工程咨询组织方案
- 社团课汇报课件
- 公司盗窃处置培训
评论
0/150
提交评论