在多个线程中简单地枚举.NET字典是否安全?
完全没有对字典的修改。
在多个线程中简单地枚举.NET字典是否安全?
完全没有对字典的修改。
是的,在这种情况下枚举是线程安全的,因为在 foreach
循环开始时,使用隐式调用 GetEnumerator
创建一个新的枚举器实例。
是的...差不多:
一个字典<(Of <(TKey, TValue>)>)可以支持多个读者并发访问,只要集合没有被修改。即便如此,枚举整个集合本质上是不安全的线程操作。在罕见的情况下,如果枚举与写访问发生冲突,则必须在整个枚举期间锁定集合。为了允许多个线程同时对集合进行读写访问,必须实现自己的同步机制。
(参考链接)