转载: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.推荐关键段与旋转锁配合使用。