如果我有一个ConcurrentDictionary,我是否需要在使用foreach
进行循环时锁定它?
答案 0 :(得分:36)
如果我有一个ConcurrentDictionary,我是否需要在使用foreach循环时锁定它?
没有。来自ConcurrentDictionary.GetEnumerator
的文档:
从字典返回的枚举器可以安全地与字典的读写一起使用,但它并不代表字典的即时快照。通过枚举器公开的内容可能包含在调用GetEnumerator后对字典所做的修改。
只要您对此感到满意,就不需要任何锁定。