读写锁的困惑

5

我不太确定如何最好地实现这个多线程场景,所以非常感谢任何建议。

我有一个数据读取块,可以同时被多个线程访问。我还有另一个块,用于写入数据,但一次只能由一个线程写入。此外,在任何线程正在读取数据时,它不能开始写入。在这里使用ReaderWriterLockSlim是可行的吗?它会在阻塞写线程之前等待读线程退出吗?

2个回答

5

是的,ReaderWriterLockSlim非常适合频繁读取/不经常写入的场景。

行为与您猜测的一样-仅限单个作者,作者在所有读者完成之前阻塞,读者在作者正在处理时无法访问。

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


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接