代码之家  ›  专栏  ›  技术社区  ›  Reci

用SRW锁替换临界截面

  •  8
  • Reci  · 技术社区  · 15 年前

    critical sections SRW locks ? 因为临界区是互斥的,所以在使用上它相当于在互斥模式下的SRW锁,对吧?根据MSDN,SRW在速度和空间上都得到了优化。这样做有什么缺点吗?我不确定微软是如何在内部实现CS和SRW的。

    谢谢!

    1 回复  |  直到 15 年前
        1
  •  12
  •   Bryan    11 年前

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

    你的问题的简短答案是“差不多”。对于SRWL来说,递归获得的关键部分的语义是不同的。如果您的程序利用了Win32的关键部分的这些特性,那么您就不能轻易地批量切换到SRWL。然而,您可以在包装器中包装SRWL以提供类似CS的语义,但是这样做有很多微妙之处,因此如果您依赖于这样的行为,那么最好还是坚持使用CS。

    Kenny Kerr's article 介绍了如何在内部实现这两种方法。