如果我初始化一般字典一次,并且不允许进一步添加/更新/删除,是否可以安全地让多个线程从中读取而没有锁定(假设在读者启动之前初始化了字典)? / p>
非泛型HashTable的帮助中有一条注释说它对多个读者来说是安全的,但我没有看到类似的不适用于通用字典
答案 0 :(得分:41)
供将来参考,文档在此处:
http://msdn.microsoft.com/en-us/library/xfhwa508.aspx
它说:
字典 可以支持多个读者 同时,只要 集合未被修改。即使是这样, 通过集合枚举是 本质上不是线程安全的 程序。在罕见的情况下 枚举与写作竞争 访问,集合必须 在整个枚举期间锁定。 允许访问集合 通过多个线程进行阅读和 写作,你必须实现自己的 同步。
答案 1 :(得分:16)
是的,如果你不再修改字典,这是安全的。线程安全只是读/写方案中的一个问题