字典的线程安全<tkey,tvalue =“”> </tkey,>

时间:2010-01-11 17:36:15

标签: c#

如果我初始化一般字典一次,并且不允许进一步添加/更新/删除,是否可以安全地让多个线程从中读取而没有锁定(假设在读者启动之前初始化了字典)? / p>

非泛型HashTable的帮助中有一条注释说它对多个读者来说是安全的,但我没有看到类似的不适用于通用字典

2 个答案:

答案 0 :(得分:41)

供将来参考,文档在此处:

http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

它说:

  

字典   可以支持多个读者   同时,只要   集合未被修改。即使是这样,   通过集合枚举是   本质上不是线程安全的   程序。在罕见的情况下   枚举与写作竞争   访问,集合必须   在整个枚举期间锁定。   允许访问集合   通过多个线程进行阅读和   写作,你必须实现自己的   同步。

答案 1 :(得分:16)

是的,如果你不再修改字典,这是安全的。线程安全只是读/写方案中的一个问题