经典线程同步——关键段CS(临界区)

转载:http://blog.youkuaiyun.com/morewindows/article/details/7442639

这位博主里面把critical section描述为关键段,不敢苟同,还是按照习惯的叫法叫临界区吧,具体什么是临界区可以参考任何一本操作系统的教程,临界区通常是指一段代码,这段代码必须互斥的执行,既然是一段代码所以先要进入这段代码,然后再出这段代码。

在下面我将描述一下临界区的使用方法以及何时可以使用。

临界区其实也是一个结构体;CRITICAL_SECTION,微软习惯把他的结构体名都为大写。

使用方法
1、在使用临界区之前,必须申请一个CRITICAL_SECTION变量

2、必须初始化这个对象,使用函数InitializeCriticalSection(CRITICAL_SECTION *m);

3、进入临界区,使用函数EnterCriticalSection(CRITICAL_SECTION *m);

4、离开临界区,使用函数LeaveCriticalSection(CRITICAL_SECTION *m);

5、必要时要销毁临界区,使用函数DeleteCriticalSection(CRITICAL_SECTION *m);


如何将临界区用在刚刚那个同步问题上呢?

首先要看看那一段代码会有同步和互斥的问题,

最后总结下临界区:
1.关键段共初始化化、销毁、进入和离开关键区域四个函数。
2.关键段可以解决线程的互斥问题,但因为具有“线程所有权”,所以无法解决同步问题。
3.推荐关键段与旋转锁配合使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值