5

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

根本没有对字典进行任何修改。

4

2 回答 2

10

是的,在这种情况下,枚举是线程安全的,因为在foreach循环开始时,会通过隐式调用创建枚举器的新实例GetEnumerator

于 2009-02-04T12:54:53.947 回答
9

是的......好吧几乎:

Dictionary<(Of <(TKey, TValue>)>) 可以同时支持多个读取器,只要不修改集合即可。即便如此,通过集合枚举本质上不是线程安全的过程。在枚举与写访问竞争的极少数情况下,必须在整个枚举期间锁定集合。要允许集合被多个线程访问以进行读写,您必须实现自己的同步。

参考

于 2009-02-04T12:56:18.547 回答