如果该应用程序针对Windows Vista或更高版本,我们可以替换所有 关键部分SRW锁?由于关键部分是相互排斥的,因此用法相当于在独家模式下的SRW锁,对吗?根据MSDN的说法,SRW既优化了速度和空间。有什么弊端吗?我不确定Microsoft内部如何实现CS和SRW。

谢谢!

有帮助吗?

解决方案

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

您问题的简短答案是“几乎”。 SRWL的语义具有递归获取的criality_section的语义。如果您的程序利用了Win32关键部分的这些特征,那么您将无法轻松切换到SRWL。但是,您可以将SRWL包裹在包装器中以提供语义等CS,但是这样做有很多微妙之处,因此,如果您取决于这种行为,最好坚持使用CS。

肯尼·克尔(Kenny Kerr)的文章 描述了两者如何在内部实施。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top