0

我需要同时允许多个作者/单个读者。

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

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

谢谢!

4

2 回答 2

0

如果您可以使用 .Net 4.5 或更高版本,我建议使用Task Parallel Library 的 BufferBlock类。(您通过 Nuget 安装 TPL。)

有关示例代码,请参见此处此处

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

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

于 2016-03-02T07:21:24.130 回答
0

这是你想要的?尽管如此,我还是建议你坚持常规的命名约定,这样可以更容易地从另一个人那里获得未来的更新。

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(); }
    }
}
于 2016-03-02T13:32:17.937 回答