线程的互斥

本文详细介绍了在Windows环境下如何实现线程的互斥,包括临界区对象和互斥对象的使用,如InitializeCriticalSection()、EnterCriticalSection()等API函数。通过创建和管理这些对象,确保了多个线程对全局变量count的互斥访问,从而解决并发问题。在实验过程中,还提及了解决IntelliSense编译错误的方案。
摘要由CSDN通过智能技术生成

实验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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值