这种情况最适合用 lock-free 技术来解决。
当然使用读写锁也行。不过千万不要使用 .NET 自带的 ReaderWriterLock ,性能太低,可以使用 ReaderWriterLockSlim,这个是 .NET 3.5 中用来代替 ReaderWriterLock 的。不过加锁始终无法摆脱死锁和性能问题。
这里有几篇 Paper ,可以参考一下:
http://www.cnblogs.com/lucifer1982/archive/2008/03/23/1116981.html
http://www.cnblogs.com/lucifer1982/archive/2008/04/16/1154727.html