预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验三进程同步的经典算法 背景知识 Windows提供的常用对象可分成三类:核心应用服务、线程同步和线程间通讯。其中, 开发人员可以使用线程同步对象来协调线程和进程的工作,以使其共享信息并执行任务。此 类对象包括互锁数据、临界段、事件、互斥体和信号等。 多线程编程中关键的一步是保护所有的共享资源,工具主要有互锁函数、临界段和互斥 体等;另一个实质性部分是协调线程使其完成应用程序的任务,为此,可利用内核中的事件 对象和信号。 在进程内或进程间实现线程同步的最方便的方法是使用事件对象,这一组内核对象允许 一个线程对其受信状态进行直接控制(见表3-1)。 而互斥体则是另一个可命名且安全的内核对象,其主要目的是引导对共享资源的访问。 拥有单一访问资源的线程创建互斥体,所有想要访问该资源的线程应该在实际执行操作之前 获得互斥体,而在访问结束时立即释放互斥体,以允许下一个等待线程获得互斥体,然后接 着进行下去。 与事件对象类似,互斥体容易创建、打开、使用并清除。利用CreateMutex()API可创 建互斥体,创建时还可以指定一个初始的拥有权标志,通过使用这个标志,只有当线程完成 了资源的所有的初始化工作时,才允许创建线程释放互斥体。 表3-1用于管理事件对象的API API名称描述 在内核中创建一个新的事件对象。此函数允许有安全性设置、手工还是 CreateEvent() 自动重置的标志以及初始时已接受还是未接受信号状态的标志 创建对已经存在的事件对象的引用。此API函数需要名称、继承标志和 OpenEvent() 所需的访问级别 SetEvent()将手工重置事件转化为已接受信号状态 ResetEvent()将手工重置事件转化为非接受信号状态 将自动重置事件对象转化为已接受信号状态。当系统释放所有的等待它 PulseEvent() 的线程时此种转化立即发生 为了获得互斥体,首先,想要访问调用的线程可使用OpenMutex()API来获得指向对象 的句柄;然后,线程将这个句柄提供给一个等待函数。当内核将互斥体对象发送给等待线程 时,就表明该线程获得了互斥体的拥有权。当线程获得拥有权时,线程控制了对共享资源的 访问——必须设法尽快地放弃互斥体。放弃共享资源时需要在该对象上调用ReleaseMute() API。然后系统负责将互斥体拥有权传递给下一个等待着的线程(由到达时间决定顺序)。 1、实验目的 1)回顾系统进程、线程的有关概念,加深对Windows2000线程的理解。 2)了解互斥体对象,通过对生产者消费者等进程间同步与互斥经典算法的实现,加深 对P、V原语以及利用P、V原语进行进程间同步与互斥操作的理解。 2、实验内容和步骤 (1).生产者消费者问题 步骤1:创建一个“Win32ConsolApplication”工程,然后拷贝清单3-1中的程序, 编译成可执行文件。 步骤2:在“命令提示符”窗口运行步骤1中生成的可执行文件。运行结果: 范例:课程课实验程序 (假设编译生成的可执行文件是os31.exe) _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ 步骤3:仔细阅读源程序,找出创建线程的WINDOWSAPI函数,回答下列问题:线程的 第一个执行函数是什么(从哪里开始执行)?它位于创建线程的API函数的第几个参数中? _______________________________________________________________________________ ____________________________________________________________________