使用ReaderWriterLock的真正缺点是什么

我们有项目目标.NET 2.0 RTM(是的,它应该是.NET 2.0 RTM,我们有一些正统的客户端)。而我只是想知道ReaderWriterLock的缺点是什么?为什么每个人都说“不要使用它,尝试使用其他类似
lock
声明”这么糟糕?如果我们可以使用.NET 3.5,我肯定会使用ReaderWriterLockSlim,但是对于
ReaderWriterLock
我有点可怕,所有这些警告来自各地。有人测量过表现还是其他什么?如果存在一些性能问题,我们可以在哪些有效负载下遇到它们? 我们在
ReaderWriterLock
主要目的方面有一个经典的情况,即多次读取和很少写入。使用
lock
语句会阻止所有读者。也许对我们来说这不是一个可怕的问题,但如果我能用
ReaderWriterLock
,我会更满意。 IMO介绍几台显示器确实是一个非常糟糕的主意。     
已邀请:
以下几篇文章可以为您提供您想要的想法。 ReaderWriterLockSlim与ReaderWriterLock的性能比较 Rico Mariani关于使用ReaderWriterLock部分这篇文章解释了使用ReaderWriterLock的一些成本和方案,同时检查了第1部分和第2部分 Jeffrey Richter是ReaderWriterLock的替代品     
如果您真的面对ReaderWriterLock的理想用例(即许多并发读取和少量写入),那么使用它! 如果你发现它太慢,那就有其他选择。 Sanjeevakumar在他的回答中提供了一些链接。我也会提供一个: 低锁技术的实际应用:实现Reader-Writer锁 我将在这里引用该链接中的内容:      使用我的第一篇文章中建议的读写器锁。如果lock perf是一个问题,请将此处的实现作为.NET System.ReaderWriterLock的“drop in”替换。在Microsoft修复其库中的版本之前,请随意使用此实现。   旋锁是一种非常有价值的低锁技术。这里使用了一个干净,简单但有效的读写器锁,可以在托管代码中完美地编写。这个锁比我见过的大多数实现都要简单得多,但是最优化。这样做的原因是旋转锁的使用极大地简化了锁的设计和分析,而不会牺牲性能。随意使用此处显示的Spin lock实现来制作其他高性能并发结构。   即使像Reader-Writer锁这样简单的东西也会对其行为产生微妙的影响(特别是当你考虑到性能问题时)。保持简单真的在这里得到回报。        

要回复问题请先登录注册