【发布时间】:2010-10-05 09:39:13
【问题描述】:
简单地从多个线程中枚举一个 .NET 字典是否安全?
根本不会修改字典。
【问题讨论】:
标签: .net multithreading dictionary thread-safety
简单地从多个线程中枚举一个 .NET 字典是否安全?
根本不会修改字典。
【问题讨论】:
标签: .net multithreading dictionary thread-safety
是的……差不多吧:
字典)>) 可以支持多个阅读器 同时,只要 集合未修改。即使是这样, 通过集合枚举是 本质上不是线程安全的 程序。在极少数情况下 枚举与写竞争 访问,集合必须是 在整个枚举期间锁定。 允许访问集合 通过多个线程进行阅读和 写,你必须实现你自己的 同步。
(ref)
【讨论】:
是的,在这种情况下,枚举是线程安全的,因为在 foreach 循环开始时,会通过隐式调用 GetEnumerator 创建枚举器的新实例。
【讨论】: