.NET Dictionary:只枚举线程安全吗?

时间:2009-02-04 12:52:33

标签: .net multithreading dictionary thread-safety

简单地从多个线程中枚举一个.NET字典是否安全?

根本不会修改字典。

2 个答案:

答案 0 :(得分:10)

是的,在这种情况下,枚举是线程安全的,因为在foreach循环的开头,创建了一个枚举器的新实例,并隐式调用GetEnumerator

答案 1 :(得分:9)

是的......差不多:

  

字典<(Of<(TKey,TValue>)>)   可以支持多个读者   同时,只要   集合未被修改。即使是这样,   通过集合枚举是   本质上不是线程安全的   程序。在罕见的情况下   枚举与写作竞争   访问,集合必须   在整个枚举期间锁定。   允许访问集合   通过多个线程进行阅读和   写作,你必须实现自己的   同步。

ref