所以我正在读.NET中关于同步的文章,我突然产生了好奇心。当您有多个对象在读取相同的数据时,您应该使用ReaderWriterLock.AcquireReaderLock来确保在数据中存在锁的情况下没有其他对象修改数据。
现在..。如果我确信没有对象会修改数据(至少在读取数据时),那么获取ReaderLock有意义吗?还是建议使用它?为什么?
发布于 2011-06-23 10:58:29
从理论上讲,如果你百分之百确定在你的读取器读取数据时没有任何东西会修改数据,那么不,没有必要获得读取器锁。读取器锁用于防止写入器在读取数据时修改数据,但仍允许多个读取器并发访问该数据。
根据the MSDN documentation的说法
ReaderWriterLock用于同步对资源的访问。在任何给定的时间,它都允许多个线程的并发读访问,或者单个线程的写访问。
发布于 2011-06-23 11:02:37
如果您确定没有人在更改数据,则不需要锁定。然而,关键是绝对没有共享数据被修改。例如,如果您正在从延迟初始化内部状态的实例中读取数据,则可能会遇到潜在的竞争条件。
https://stackoverflow.com/questions/6448836
复制相似问题