ConcurrentDictionary枚举和锁定

Sch*_*999 24 .net c# concurrency

如果我有一个ConcurrentDictionary,我是否需要在使用它循环时锁定它foreach

Jon*_*eet 40

如果我有一个ConcurrentDictionary,我是否需要在使用foreach循环时锁定它?

不.来自以下文档ConcurrentDictionary.GetEnumerator:

从字典返回的枚举器可以安全地与字典的读写一起使用,但它并不代表字典的即时快照.通过枚举器公开的内容可能包含在调用GetEnumerator后对字典所做的修改.

只要你对它没问题,你就不需要任何锁定.