澄清C#字典的读写

Jos*_*hua 11 c# dictionary thread-safety

在本声明的背景下,

只要未修改集合,Dictionary就可以同时支持多个读取器.即便如此,通过集合枚举本质上不是一个线程安全的过程.在枚举与写访问争用的极少数情况下,必须在整个枚举期间锁定该集合.要允许多个线程访问集合以进行读写,您必须实现自己的同步.

读写是什么意思?我的理解是,读操作是查找键并提供对其值的引用的操作,而写操作是从字典中添加或删除键值对的操作.但是,关于这一点,我找不到任何结论.

所以最大的问题是,在实现线程安全字典时,更新字典中现有键值的操作是否会被视为读者或作者?我计划让多个线程访问字典中的唯一键并修改它们的值,但线程不会添加/删除新键.

假设修改现有值不是字典上的写操作,显而易见的暗示是我的线程安全字典的实现可以更高效,因为每次我尝试更新时都不需要获得独占锁现有密钥的值.

不能使用.Net 4.0中的ConcurrentDictionary.

ale*_*dej 2

覆盖现有值应被视为写入操作

  • 这实际上是一条评论,而不是对问题的回答。请使用“添加评论”为作者留下反馈。 (2认同)