临界区、锁竞争(Lock Contention)、锁护送(Lock Convoys)简单分析 盛大创新院 刘刚

临界区是一种防止多个线程同时执行一个特定代码节的机制,window临界区是一种轻量级机制,在某一时间内只允许一个线程执行某个给定代码段。

 

通常在修改全局数据(如集合类)时会使用临界区。事件、多用户终端执行程序和信号量也用于多线程同步,但临界区与它们不同,它并不总是执行向内核模式的控制转换,这一转换成本昂贵。稍后将会看到,要获得一个未占用临界区,事实上只需要对内存做出很少的修改,其速度非常快。只有在尝试获得已占用临界区时,它才会跳至内核模式。

 

这一轻量级特性的缺点在于临界区只能用于对同一进程内的线程进行同步。

 

关于CRITICAL_SECTION的详细说明,见下面的链接:

http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/ousCriticalSections.mspx

 

对于CRITICAL_SECTIONWindows伪代码的分析, (参考win2Kprivate/ntos/dll/i386/critsect.asm)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值