读取器/编写器锁

更新:2007 年 11 月

ReaderWriterLockSlim 类允许多个线程同时读取一个资源,但在向该资源写入时要求线程等待以获得独占锁。

可以在应用程序中使用 ReaderWriterLockSlim,以便在访问一个共享资源的线程之间提供协调同步。获得的锁是针对 ReaderWriterLockSlim 本身的。

与任何线程同步机制相同,您必须确保任何线程都不会跳过 ReaderWriterLockSlim 提供的锁定。确保做到这一点的一种方法是设计一个封装该共享资源的类。此类将提供访问专用共享资源以及使用专用 ReaderWriterLockSlim 进行同步的成员。有关示例,请参见 ReaderWriterLockSlim 类的代码示例。ReaderWriterLockSlim 足够有效,可用于同步各个对象。

设计您应用程序的结构,让读取和写入操作的时间尽可能最短。因为写入锁是排他的,所以长时间的写入操作会直接影响吞吐量。长时间的读取操作会阻止处于等待状态的编写器,并且,如果至少有一个线程在等待写入访问,则请求读取访问的线程也将被阻止。

bz6sth95.alert_note(zh-cn,VS.90).gif说明:

.NET Framework 有两个读取器-编写器锁,即 ReaderWriterLockSlimReaderWriterLock。建议在所有新的开发工作中使用 ReaderWriterLockSlimReaderWriterLockSlim 类似于 ReaderWriterLock,只是简化了递归及升级和降级锁定状态的规则。ReaderWriterLockSlim 可避免多种潜在的死锁情况。此外,ReaderWriterLockSlim 的性能明显优于 ReaderWriterLock

请参见

参考

ReaderWriterLockSlim

ReaderWriterLock

其他资源

托管线程处理

线程处理对象和功能