33

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

4

1 回答 1

51

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

不。从文档中ConcurrentDictionary.GetEnumerator

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

只要您对此感到满意,就不需要任何锁定。

于 2012-09-04T17:40:24.483 回答