ReaderWriterLockSlim 类允许多个线程同时读取一个资源,但在向该资源写入时要求线程等待以获得独占锁。
可以在应用程序中使用 ReaderWriterLockSlim,以便在访问一个共享资源的线程之间提供协调同步。 获得的锁是针对 ReaderWriterLockSlim 本身的。
与任何线程同步机制相同,您必须确保任何线程都不会跳过 ReaderWriterLockSlim 提供的锁定。 确保做到这一点的一种方法是设计一个封装该共享资源的类。 此类将提供访问专用共享资源以及使用专用 ReaderWriterLockSlim 进行同步的成员。 有关示例,请参见 ReaderWriterLockSlim 类的代码示例。 ReaderWriterLockSlim 的效率足以用于同步各个对象。
设计您应用程序的结构,让读取和写入操作的时间尽可能最短。 因为写入锁是排他的,所以长时间的写入操作会直接影响吞吐量。 长时间的读取操作会阻止处于等待状态的编写器,并且,如果至少有一个线程在等待写入访问,则请求读取访问的线程也将被阻止。
![]() |
---|
.NET Framework 具有两个读取器/编写器锁:ReaderWriterLockSlim 和 ReaderWriterLock。对于所有新的开发建议使用 ReaderWriterLockSlim。ReaderWriterLockSlim 类似于 ReaderWriterLock,但简化了递归规则以及升级和降级锁定状态的规则。ReaderWriterLockSlim 可避免多种潜在的死锁情况。此外,ReaderWriterLockSlim 的性能明显优于 ReaderWriterLock。 |