简单地从多个线程枚举一个.NET字典是否安全?
根本没有修改词典.
是的,在这种情况下,枚举是线程安全的,因为在foreach
循环开始时,使用隐式调用创建枚举器的新实例GetEnumerator
.
是的......差不多:
字典<(Of <(TKey,TValue>)>)可以同时支持多个读者,只要不修改集合即可.即便如此,通过集合枚举本质上不是一个线程安全的过程.在枚举与写访问争用的极少数情况下,必须在整个枚举期间锁定该集合.要允许多个线程访问集合以进行读写,您必须实现自己的同步.
(参考)