使用 ReaderWriterLockSlim 与 readers-writer 相反

本文关键字:相反 readers-writer ReaderWriterLockSlim 使用 | 更新日期: 2023-09-27 18:36:57

我需要同时允许多个写入器/单个读取器。

我找到了ReaderWriterLockSlim类,但我的命名有问题。我需要使用 EnterReadLock() 来允许编写器写入,使用 EnterWriteLock() 来允许读者写入,这对于进一步使用可能会有点混乱。

ReaderWriterLockSlim类是否有针对我问题的包装类,或者您能否提出其他解决方案。

谢谢!

使用 ReaderWriterLockSlim 与 readers-writer 相反

如果可以使用 .Net 4.5 或更高版本,我建议使用任务并行库的 BufferBlock 类。 (通过 Nuget 安装 TPL。

有关示例代码,请参阅此处和此处。

或者,您可以考虑使用 .Net 4.0 或更高版本支持的 BlockingCollection

这两个类使得在多个编写器和单个读取器之间共享队列变得相对容易。

这是你要找的吗?虽然我建议你坚持常规的命名约定,让另一个人的未来更新更容易。

class MyReaderWriterLockSlim: ReaderWriterLockSlim
{
    new public void EnterWriteLock()
    { base.EnterReadLock(); }
    new public void EnterReadLock()
    { base.EnterWriteLock(); }
    new public void ExitReadLock()
    { base.ExitWriteLock(); }
    new public void ExitWriteLock()
    { base.ExitReadLock(); }
}
class Program
{
    private static void Main(string[] args)
    {
        MyReaderWriterLockSlim myLock=new MyReaderWriterLockSlim();
        myLock.EnterReadLock();
        try
        {
            //do stuff
        }
        finally 
        { myLock.ExitReadLock(); }
    }
}