读/写锁定混乱

时间:2010-11-22 14:50:00

标签: c# .net multithreading locking

我不完全确定如何最好地完成这种多线程场景,因此任何输入都会受到赞赏。

我有一个读取数据的块,几个线程可以同时访问。我有另一个写入数据的块,只有一个线程可以随时写入。只要任何线程正在读取数据,它也无法开始写入。 ReaderWriterLockSlim是这样的方式,是否会在阻塞线程写入之前等待读取线程退出?

2 个答案:

答案 0 :(得分:5)

是的,ReaderWriterLockSlim非常适合频繁的读者/偶发作家场景。

行为正如您所猜测的那样 - 只有单一作家,作家会阻止所有读者完成,读者无法在作者处理过程中访问。

请注意,保持锁定的时间(无论是读取还是写入)都足够长,以防止任何并发访问,而不再是。

答案 1 :(得分:1)

是的,听起来像是你想要的ReaderWriterLockSlim。

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

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