【问题标题】:Replace critical section with SRW lock用 SRW 锁替换临界区
【发布时间】:2011-03-30 18:04:38
【问题描述】:

如果应用程序针对 Windows Vista 或更高版本,我们可以将所有 critical sections 替换为 SRW locks 吗?由于临界区是互斥的,所以在使用上它相当于 SRW 锁的独占模式,对吧?根据 MSDN,SRW 针对速度和空间进行了优化。这样做有什么缺点吗?我不确定微软内部是如何实现 CS 和 SRW 的。

谢谢!

【问题讨论】:

    标签: multithreading synchronization critical-section slim


    【解决方案1】:

    请参阅 Joe Duffy 的书“Windows 上的并发编程”,第 289 页。

    您的问题的简短回答是“几乎”。递归获取的 CRITICAL_SECTION 的语义对于 SRWL 是不同的。如果你的程序利用了 Win32 的临界区的这些特性,那么你就不能轻易地完全切换到 SRWL。但是,您可以将 SRWL 包装在包装器中以提供类似 CS 的语义,但这样做有很多微妙之处,因此如果您依赖这种行为,最好还是坚持使用 CS。

    Kenny Kerr's article 简要介绍了两者在内部的实现方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 2015-10-08
      相关资源
      最近更新 更多