- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验要求提交内容:源程序(必须有注释)、数据文件、运行结果、实验报告
实验要求
提交内容:源程序(必须有注释) 、数据文件、运行结果、实
验报告。
实验报告格式:
l 实验目的
l 实验设计
l 程序中使用的数据结构及符号说明
l 程序流程图
l 数据文件说明
l 运行结果说明
编程环境:Windows2000/XP ,VC++6.0 或.net
实验1:读者写者问题
实验内容
在Windows 2000/XP 环境下,创建一个控制台程序,包含n 个线程,表示n 个读者或写者,
每个线程按相应测试数据文件(后面有介绍)的要求进行读写操作。用信号量机制分别实
现读者优先和写者优先的的读者-写者问题。
读者写者问题的读写操作限制(包括读者优先和写者优先):
1)写-写互斥,即不能有两个写者同时进行写操作。
2 )读-写互斥,即不能同时有一个线程在读,而另一个线程在写。
3 )读-读允许,即可以有一个或多个读者在读。
读者优先的附加限制:如果一个读者申请进行读操作时已有另一个读者正在进行读操作,则
该读者可直接开始读操作。
写者优先的附加限制:如果一个读者申请进行读操作时已有另一个写者在等待访问共享资
源,则该读者必须等到没有写者处于等待状态后才能开始读操作。
运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操作和结束读写操
作时分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。
测试数据文件格式
测试数据文件包含n 行测试数据,分别描述创建的n 个线程是读者还是写者,以及读写操作
的开始时间和持续时间。每行测试数据包含4 个字段,各个字段间用空格分隔。第一个字段
为一个正整数,表示线程序号。第二字段表示相应线程角色,R 表示读者,W 表示写者。
第三字段为一个正数,表示读写操作的开始时间:线程创建后,延迟相应时间(单位为秒)
后发出对共享资源的读写申请。第四字段为一个正数,表示读写操作的延续时间。当线程读
写申请成功后,开始对共享资源的读写操作,该操作持续相应时间后结束,并释放共享资源。
下面是一个测试数据文件的例子:
1 R 3 5
2 W 4 5
3 R 5 2
4 R 6 5
5 W 5.1 3
线程基本知识
进程是由两个部分构成的,一个是进程内核对象,另一个是地址空间。同样,线程也是由两
个部分组成的:
• 一个是线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线
程统计信息的地方。
• 另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量。
进程是不活泼的。进程从来不执行任何东西,它只是线程的容器。每个进程至少需要一个线
程。线程总是在某个进程环境中创建的,而且它的整个寿命期都在该进程中。这意味着线程
在它的进程地址空间中执行代码,并且在进程的地址空间中对数据进行操作。因此,如果在
单进程环境中,你有两个或多个线程正在运行,那么这两个线程将共享单个地址空间。这些
线程能够执行相同的代码,对相同的数据进行操作。这些线程还能共享内核对象句柄,因为
句柄表依赖于每个进程而不是每个线程存在。
进程使用的系统资源比线程多得多,原因是它需要更多的地址空间。为进程创建一个虚拟地
址空间需要许多系统资源。系统中要保留大量的记录,这要占用大量的内存。而线程使用的
系统资源要少得多。实际上,线程只有一个内核对象和一个堆栈,保留的记录很少,因此需
要很少的内存。
相关API 函数说明
1.CreateThread
功能:创建一个在调用进程的地址空间中执行的线程。
原型:HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T
dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD
dwCreationFlags, LPDWORD lpThreadId );
参数:本实验中第一个参数用NULL ,第二个参数用0 即可。第三个参数为一个函数指针,
该线程执行此函数,这个函数需要的参数由第四个参数传递。第五个参数为0 。第六个参数
指向一个32 位值,它接收该线程的标识符。
返回值:若函数调用成功,返回值为新线程的句柄;若函数调用失败,返回值为NULL 。
2.Sleep
功能:该函数对于指定的时间间隔挂起当前的执行线程。
原型:void Sleep( DWORD dwMilliseconds );
参数:dwMilliseconds 数
您可能关注的文档
- 全国2010年7月自学考试大学语文试题及答案.doc
- Welfare is also a management competitiveness(福利也是一种管理竞争力).doc
- 【精品文档】物业公司保洁员培训方案.doc
- 人教版七级数学上册说课标说教材(三说一看含知识树)文稿.doc
- 全国公共英语三级真题 2009年3月全国公共英语考试二级笔试真题及答案.doc
- 人教版新课标小学美术六年级上册全册教案1.doc.doc
- 人类辅助生殖技术中的伦理监督与实践.doc
- 全面风险管理与内控体系建设——全面风险管理与内控现状诊断操作手册.doc
- Windows网络操作系统管理模拟试题.doc
- 上海市职业培训的现状丶问题与对策研究(一)_[全文].doc
- 山东省潍坊市2015-2016学年高一上学期期末考试历史试题__Word版缺答案 .doc.doc
- 人力资源成本控制(中英文论文)(可编辑).doc
- XX国际广场室内装饰工程招标文件(可编辑).doc
- 人力资源管理 毕业论文:安利的薪酬体系设计与激励机制研究(可编辑).doc
- 司法考试学习笔记11法制史 呕心沥血整理(可编辑).doc
- 四川省成都七中2010-2011学年高一上学期期中考试语文试题.doc
- 十二经络功能主治总体介绍 十二经络走向演示 1.doc
- 人教版小学语文三年级语文下册期中测试题【精品2套】.doc
- 山东省2011年专升本公共事业管理 管理心理学笔记.doc
- 人教版小学四年级语文上册期中测试卷147116379.doc
文档评论(0)