5

我查看了 .NET 2.0 中的 ReaderWriterLock 和 .NET 3.5 中的 ReaderWriterLockSlim,而超薄版本不使用内核对象进行锁定。对于我的上下文,它可能会生成大量(但不是大量)对象,这听起来更好。

但是我编写的代码在过渡期间需要在 .NET 2.0 和 3.5 中使用,所以 3.5 版本虽然看起来很适合我的目的,但不能使用。

有没有人拥有或知道一个类似的类,我可以将其插入 .NET 2.0 并获得一些相同的好处?

4

4 回答 4

5

据我所知,没有一个来自微软(否则ReaderWriterLockSlim会有点毫无意义),如果你从第三方那里找到一个,而不是你相信拥有优秀头脑的人,他们花了很长时间思考、实施和测试它,我不会相信的。例如,我当然不会相信随机的 CodeProject 实现。

您是否有任何具体措施表明使用ReaderWriterLockSlim会更好,以至于值得努力寻找 .NET 2.0 的替代品?这当然是“很高兴拥有”,但我怀疑它具有重大意义的情况相对罕见。除非你已经知道锁定对你来说是一个瓶颈,否则我会坚持你所拥有的,并准备好在可能的情况下升级。

您可能想尝试只使用普通监视器而不是ReaderWriterLock虽然 - 在许多情况下,RWL 的开销超过了好处。

当然,这一切都取决于具体情况 - 您的应用程序可能真的会变得更快,ReaderWriterLockSlim...

于 2008-11-13T08:27:29.713 回答
1

没有硬锁 ReadWriteLocker - 这个类是根据 ReaderWriterLock Alternative 设计的,它比 ReaderWriterLock 快 20%-30%。

我所做的区别是:

  1. 支持通过在读锁中嵌套写锁来升级锁。与 ReaderWriterLock 不同,升级锁是线程安全的。
  2. 有示例集合,向您展示如何设计线程安全集合。它们不如 .NET 4.0 的 PFX 集合高效,但它们还有其他好处。
  3. 如果启动的所有锁都已解锁,则无法死锁。并且所有其他锁定机制都与该储物柜互斥。
  4. 能够检测死锁并关闭死锁检测开销,一旦您验证死锁不会发生。
  5. 高度递归,比 ReaderWriterLock 和 ReaderWriterLockSlim 强大许多倍。

我花了很多时间在它上面,我希望它有用。到目前为止,它还是非常新的,需要对其他锁定机制进行测试。当然,一切都是 .NET 2.0 的抱怨。

于 2010-09-25T18:56:47.230 回答
0

PowerThreading库ReaderWriterGate中的情况如何?

于 2009-04-06T08:50:42.210 回答
0

我问了一个关于使用的缺点的问题,ReaderWriterLock并且有一些有趣的链接包含ReaderWriterLock. 看看我的问题的答案

于 2011-04-12T04:36:59.590 回答