如果该应用程序针对 Windows Vista 或更高版本,我们可以替换所有临界区 http://msdn.microsoft.com/en-us/library/ms682530%28v=VS.85%29.aspx with SRW锁 http://msdn.microsoft.com/en-us/library/aa904937%28v=VS.85%29.aspx?由于临界区是互斥的,所以使用起来相当于独占模式下的SRW锁,对吧?根据 MSDN 的说法,SRW 在速度和空间方面都进行了优化。这样做有什么缺点吗?我不确定微软内部是如何实现CS和SRW的。
Thanks!
请参阅 Joe Duffy 的书“Windows 上的并发编程”,第 289 页。
你的问题的简短答案是“几乎”。递归获取的 CRITICAL_SECTION 的语义与 SRWL 的不同。如果您的程序利用了 Win32 关键部分的这些特性,那么您就不能轻松地批量切换到 SRWL。但是,您可以将 SRWL 包装在包装器中以提供类似 CS 的语义,但这样做有很多微妙之处,因此如果您依赖于此类行为,最好坚持使用 CS。
肯尼·科尔的文章 http://msdn.microsoft.com/en-gb/magazine/jj721588.aspx描述了一些关于两者如何在内部实现的信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)