临界区是一种防止多个线程同时执行一个特定代码节的机制,window临界区是一种轻量级机制,在某一时间内只允许一个线程执行某个给定代码段。
通常在修改全局数据(如集合类)时会使用临界区。事件、多用户终端执行程序和信号量也用于多线程同步,但临界区与它们不同,它并不总是执行向内核模式的控制转换,这一转换成本昂贵。稍后将会看到,要获得一个未占用临界区,事实上只需要对内存做出很少的修改,其速度非常快。只有在尝试获得已占用临界区时,它才会跳至内核模式。
这一轻量级特性的缺点在于临界区只能用于对同一进程内的线程进行同步。
关于CRITICAL_SECTION的详细说明,见下面的链接:
对于CRITICAL_SECTION的Windows伪代码的分析, (参考win2K的private/ntos/dll/i386/critsect.asm):