【问题标题】:Read/Write locking confusion读/写锁定混淆
【发布时间】:2010-11-22 14:49:59
【问题描述】:

我不完全确定如何最好地完成这种多线程方案,因此任何输入都将不胜感激。

我有一个块,它读取数据,多个线程可以同时访问。我有另一个写入数据的块,任何时候只有一个线程可以写入。只要任何线程正在读取数据,它就无法开始写入。是ReaderWriterLockSlim这里走的路,会不会等读线程退出后再阻塞线程写?

【问题讨论】:

    标签: c# .net multithreading locking


    【解决方案1】:

    是的,ReaderWriterLockSlim 非常适合经常阅读/不经常阅读的场景。

    行为如您所料 - 仅单个写入器,写入器阻塞直到所有读取器完成,写入器正在处理时读取器无法访问。

    请注意,您持有锁(无论是读取还是写入)的时间足够长,以防止任何并发访问,并且不再如此。

    【讨论】:

      【解决方案2】:

      是的,听起来 ReaderWriterLockSlim 就是您想要的。

      只要有读锁,就不会获得写锁。我建议您阅读文档以获取有关行为的完整描述(锁定队列等):

      http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlockslim.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        相关资源
        最近更新 更多