实验要求提交内容:源程序(必须有注释)、数据文件、运行结果、实验报告.pdfVIP

实验要求提交内容:源程序(必须有注释)、数据文件、运行结果、实验报告.pdf

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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 数

您可能关注的文档

文档评论(0)

bodkd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档