实验3:线程的互斥
一、实验目的
(1)熟练掌握Windows系统环境下线程的创建与撤销。
(2)熟悉Windows系统提供的线程互斥API。
(3)使⽤Windows系统提供的线程互斥API解决实际问题。
二、实验准备
1、临界区对象
临界区对象(CriticalSectio)包括初始化临界区(InitializeCriticalSection())、进⼊临界区
( EnterCrticalSection ())、退出临界区( Le a v e Cr i tic alSe c tion ())及删除临界区
(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:指出临界区对象的地址。
返回值:
该函数没有返回值。
2.互斥对象
互斥对象(Mutex)包括创建互斥对象(CreateMutex())、打开互斥对象(OpenMutex())及释放互斥对象(ReleaseMutex())API函数。
(1)创建互斥对象
CreateMutex(0⽤于创建⼀个互斥对象。
原型:
HANDLE CreateMutex(
LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner,
LPCTSTR lpName
);
参数说明:
lpMutexAttributes