我查看了 .NET 2.0 中的 ReaderWriterLock 和 .NET 3.5 中的 ReaderWriterLockSlim,而超薄版本不使用内核对象进行锁定。对于我的上下文,它可能会生成大量(但不是大量)对象,这听起来更好。
但是我编写的代码在过渡期间需要在 .NET 2.0 和 3.5 中使用,所以 3.5 版本虽然看起来很适合我的目的,但不能使用。
有没有人拥有或知道一个类似的类,我可以将其插入 .NET 2.0 并获得一些相同的好处?
我查看了 .NET 2.0 中的 ReaderWriterLock 和 .NET 3.5 中的 ReaderWriterLockSlim,而超薄版本不使用内核对象进行锁定。对于我的上下文,它可能会生成大量(但不是大量)对象,这听起来更好。
但是我编写的代码在过渡期间需要在 .NET 2.0 和 3.5 中使用,所以 3.5 版本虽然看起来很适合我的目的,但不能使用。
有没有人拥有或知道一个类似的类,我可以将其插入 .NET 2.0 并获得一些相同的好处?
据我所知,没有一个来自微软(否则ReaderWriterLockSlim
会有点毫无意义),如果你从第三方那里找到一个,而不是你相信拥有优秀头脑的人,他们花了很长时间思考、实施和测试它,我不会相信的。例如,我当然不会相信随机的 CodeProject 实现。
您是否有任何具体措施表明使用ReaderWriterLockSlim
会更好,以至于值得努力寻找 .NET 2.0 的替代品?这当然是“很高兴拥有”,但我怀疑它具有重大意义的情况相对罕见。除非你已经知道锁定对你来说是一个瓶颈,否则我会坚持你所拥有的,并准备好在可能的情况下升级。
您可能想尝试只使用普通监视器而不是ReaderWriterLock
虽然 - 在许多情况下,RWL 的开销超过了好处。
当然,这一切都取决于具体情况 - 您的应用程序可能真的会变得更快,ReaderWriterLockSlim
...
没有硬锁 ReadWriteLocker - 这个类是根据 ReaderWriterLock Alternative 设计的,它比 ReaderWriterLock 快 20%-30%。
我所做的区别是:
- 支持通过在读锁中嵌套写锁来升级锁。与 ReaderWriterLock 不同,升级锁是线程安全的。
- 有示例集合,向您展示如何设计线程安全集合。它们不如 .NET 4.0 的 PFX 集合高效,但它们还有其他好处。
- 如果启动的所有锁都已解锁,则无法死锁。并且所有其他锁定机制都与该储物柜互斥。
- 能够检测死锁并关闭死锁检测开销,一旦您验证死锁不会发生。
- 高度递归,比 ReaderWriterLock 和 ReaderWriterLockSlim 强大许多倍。
我花了很多时间在它上面,我希望它有用。到目前为止,它还是非常新的,需要对其他锁定机制进行测试。当然,一切都是 .NET 2.0 的抱怨。
PowerThreading库ReaderWriterGate
中的情况如何?
我问了一个关于使用的缺点的问题,ReaderWriterLock
并且有一些有趣的链接包含ReaderWriterLock
. 看看我的问题的答案。