简单地从多个线程中枚举一个.NET字典是否安全?
根本不会修改字典。
答案 0 :(得分:10)
是的,在这种情况下,枚举是线程安全的,因为在foreach
循环的开头,创建了一个枚举器的新实例,并隐式调用GetEnumerator
。
答案 1 :(得分:9)
是的......差不多:
字典<(Of<(TKey,TValue>)>) 可以支持多个读者 同时,只要 集合未被修改。即使是这样, 通过集合枚举是 本质上不是线程安全的 程序。在罕见的情况下 枚举与写作竞争 访问,集合必须 在整个枚举期间锁定。 允许访问集合 通过多个线程进行阅读和 写作,你必须实现自己的 同步。
(ref)