实验六 线程的同步
1、 实验目的
(1) 进一步掌握 Windows系统环境下线程的创建与撤销。
(2) 熟悉 Windows 系统提供的线程同步 API。
(3) 使用 Windows 系统提供的线程同步 API 解决实际问题。
2、 实验准备知识:相关 API 函数介绍
① 等待对象
等待对象( wait functions )函数包括等待一个对象( WaitForSingleObject
())和等待多个对象( WaitForMultipleObject ())两个 API 函数。
1) 等待一个对象
WaitForSingleObject ()用于等待一个对象。它等待的对象可以为以下对象
之一。
·Change ontification: 变化通知。
·Console input: 控制台输入。
·Event: 事件。
·Job: 作业。
·Mutex: 互斥信号量。
·Process: 进程。
·Semaphore: 计数信号量。
·Thread: 线程。
·Waitable timer: 定时器。
原型:
DWORD WaitForSingleObject(
HANDLE hHandle, // 对象句柄
DWORD dwMilliseconds // 等待时间
);
参数说明:
(1) hHandle: 等待对象的对象句柄。 该对象句柄必须为 SYNCHRONIZE访问。
(2) dwMilliseconds: 等待时间, 单位为 ms。若该值为 0,函数在测试对象
的状态后立即返回,若为 INFINITE ,函数一直等待下去,直到接收到
一个信号将其唤醒,如表 2-1 所示。
返回值:
如果成功返回,其返回值说明是何种事件导致函数返回。
表 2-1 函数描述
访问 描述
WAIT ABANDONED 等待的对象是一个互斥( Mutex)对象,该互斥对象没有被拥有它
的线程释放,它被设置为不能被唤醒
WAIT OBJECT 0 指定对象被唤醒