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

我有一个读取数据的块,多个线程可以一次访问。我还有另一个写数据的块,任何时候都只能写一个线程。而且,只要任何线程正在读取数据,它就无法开始写入。 ReaderWriterLockSlim是前往此处的方式吗,它会在阻止线程写入之前等待读取线程退出吗?

最佳答案

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

行为就如您所猜测的那样-仅单个写入器,写入器阻塞,直到所有读取器都完成,写入器在处理过程中读取器无法访问。

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

10-06 13:21