实验二:读者写者问题 班级: 学号: 姓名: 实验二:读者写者问题 一、实验目的 1. 通过编写和调试程序以加深对进程、线程管理方案的理解; 2. 熟悉 Window s 多线程程序设计方法; 二、实验要求 在 Window s 环境下,创建一个控制台进程,此进程包含 n 个线程。用这 n 个线程来表示 n 个读者或写者。每个线程按相应测试数据文件(后面介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先问题。 读者-写者问题的读写操作限制(包括读者优先和写者优先) 1 ) 写-写互斥:不能有两个写者同时进行写操作 2 ) 读-写互斥:不能同时有一个线程在读,而另一个线程在写。 3 ) 读-读允许:可以有一个或多个读者在读。 读者优先的附加限制:如果读者申请进行读操作时已有另一个读者正在进行读操作,则该读者可直接开始读操作。 运行结果显示要求:要求在每个线程创建、发出读写申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。 测试数据文件包括 n 行测试数据,分别描述创建的 n 个线程是读者还是写者,以及读写操作的开始时间和持续时间。每行测试数据包括四个字段,每个字段间用空格分隔。第1个字段为正整数,表示线程的序号。第2 个字段表示线程的角色,R 表示读者,W 表示写者。第3 个字段为一个正数,表示读写开始时间:线程创建后,延迟相应时间(单位为秒)后发出对共享资源的读写申请。第4 个字段为一个正数,表示读写操作的延迟时间。当 线程读写申请成 功 后,开始对共享资源进行读写操作,该操作持续相应时间后结束,释 放 该资源。 下面是一个测试数据文件的例 子 (在记 事 本 手 工 录 入 数据): 1 R 3 5 2 W 4 5 3 R 5 2 4 R 6 5 5 W 5.1 3 三 、实验环境 硬 件设备 :个人 计算 机。 系 统 软 件:w indow s 操作系 统 ,Visual C++6.0 编译 环境。 四、实验原 理 所谓 读者写者问题,可以这样 的描述,有一群 写者和一群 读者,写者在写同一本 书 ,读者也 在读这本 书 ,多个读者可以同时读这本 书 ,但 是,只 能有一个写者在写书 ,并 且 ,读者比 写者优先,也 就 是说 ,读者和写者同时提出请求时,读者优先。当 读者提出请求时需 要有一个互斥操作,另外 ,需 要有一个信号量 S 来当 前 是否 可操作。 信号量机制是支...