我在多线程环境中有一个 C# 字典。我使用
TryGetValue
进行无锁阅读,同时字典正在重新组织。
是否有可能得到一个与这个key无关的完全不同的值?我的意思不仅仅是一个不是最新的值,而是一个对应于不同密钥的完全错误的值。
简短回答:是的!
长答案:字典默认情况下不是线程安全的。如果您需要线程安全的,可以使用
ConcurrentDictionary
https://msdn.microsoft.com/en-us/library/dd287191(v=vs.110).aspx
另请参阅有关线程安全集合的 Microsoft 参考 https://msdn.microsoft.com/en-us/library/dd997305(v=vs.110).aspx