实验二进程(线程)的同步与互斥.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
实验二进程(线程)的同步与互斥 实验目的: 1. 掌握基本的同步与互斥算法,理解生产者消费者模型。 2. 学习使用 Windows 中基本的同步对象,掌握相关 API 的使用方法。 3. 了解 Windows 中多线程的并发执行机制,实现进程的同步与互斥。 实验内容: 1. 实验内容以生产者 / 消费者模型为依据,在 Windows 环境下创建一个控制台进程,在该进程中创建 n 个线程模拟生产者和消费者,实现进程(线程)的同步与互斥。 2. 实验要求学习并理解生产者/消费者模型及其同步/互斥规则;学习了解 Windows 同步对象及其特性;熟悉实验环境,掌握相关 API 的使用方法;设计程序,实现生产者/消费者进程(线程)的同步与互斥。 相关 API 的功能及使用: 1. CreateThread 函数:创建一个在调用进程的地址空间中执行的线程。 参数说明: * lpThreadAttributes —— 指向一个 LPSECURITY_ATTRIBUTES(新线程的安全性描述符) * dwStackSize —— 定义原始堆栈大小 * lpStartAddress —— 指向使用 LPTHREAD_START_ROUTINE 类型定义的函数 * lpParamiter —— 定义一个给进程传递参数的指针 * dwCreationFlags —— 定义控制线程创建的附加标志 * lpThread —— 保存线程标志符(32 位) 2. CreateMutex 函数:创建一个命名或匿名的互斥量对象 参数说明: * lpMutexAttributes —— 必须取值 NULL * bInitialOwner —— 指示当前线程是否马上拥有该互斥量(即马上加锁) * lpName —— 互斥量名称 3. CreateSemaphore 函数:创建一个命名或匿名的信号量对象 参数说明: * lpSemaphoreAttributes —— 必须取值 NULL * lInitialCount —— 信号量的初始值。该值大于等于 0,但小于等于 lMaximumCount 指定的最大值 * lMaximumCount —— 信号量的最大值 * lpName —— 信号量名称 4. WaitForSingleObject 函数:使程序处于等待状态,直到信号量 hHandle 出现(即其值大于 0)或超过规定的等待时间 参数说明: * hHandle —— 信号量指针 * dwMilliseconds —— 等待的最长时间(INFINITE 为无限等待) 5. ReleaseSemaphore 函数:对指定信号量加上一个指定大小的量。成功执行则返回非 0 值 参数说明: * hSemaphore —— 信号量指针 * lReleaseCount —— 信号量的增量 * lppreviousCount —— 保存信号量当前值 6. ReleaseMutex 函数:打开互斥锁,即把互斥量加 1。成功调用则返回 0 参数说明: * hMutex —— 互斥量指针 本实验旨在让学生掌握基本的同步与互斥算法,理解生产者消费者模型,并学习使用 Windows 中基本的同步对象,掌握相关 API 的使用方法。通过实验,学生将了解 Windows 中多线程的并发执行机制,实现进程的同步与互斥。
- 粉丝: 17
- 资源: 26万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助