实验三:线程的互斥
一、实验目的
(1)熟练掌握Windows系统环境下线程的创建与撤销。
(2)熟悉Windows系统提供的线程互斥API。
(3)使⽤Windows系统提供的线程互斥API解决实际问题。
(4)分别两种方法--使用临界区对象和互斥对象完成实验:线程的互斥。
二、实验准备
LPCRITICAL_SECTION hCriticalSection; ----定义指向临界区对象的地址指针
CRITICAL_SECTION Critical; ----定义临界区
(1).临界区对象
临界区对象(CriticalSection)包括初始化临界区(InitializeCriticalSection())、进入临界区(EnterCriticalSection())、退出临界区(LeaveCriticalSection())及删除临界区(DeleteCriticalSection())等API函数。
1.初始化临界区
InitializeCriticalSection()⽤于初始化临界区对象。
原型:
VOID InitializeCriticalSection(
LPCRITICAL_SECTION lpCriticalSection );
参数说明:
lpCriticalSection:指出临界区对象的地址。
2.进⼊临界区
EnterCriticalSection()等待进入临界区的权限,当获得该权限后进入临界区。
原型:
VOID EnterCriticalSection(
LPCRITICAL_SECTION lpCriticalSection );
参数说明:
lpCriticalSection:指出临界区对象的地址。
3.退出临界区
LeaveCriticalSection()释放临界区的使⽤权限。
原型:
VOID LeaveCriticalSection(
LPCRITICAL_SECTION lpCriticalSection );
参数说明:
lpCriticalSection:指出临界区对象的地址。
4.删除临界区
DeleteCriticalSection()删除与临界区有关的所有系统资源。
原型:
VOID DeleteCriticalSection(
LPCRITICAL_SECTION lpCriticalSection );
参数说明:
lpCriticalSection:指出临界区对象的地址
static HANDLE hMutex = NU