多个线程可以修改字典吗?

时间:2010-04-08 07:06:33

标签: .net multithreading c#-3.0

在C#中,多个线程可以读取和写入字典,前提是每个线程只访问字典中的一个元素而不会访问另一个元素吗?

2 个答案:

答案 0 :(得分:4)

不,字典不是线程安全的。

除了修改作为字典中的值存储的引用类型(对象)的内容外。

在.NET 4中,我们将System.Collections.Concurrent.ConcurrentDictionary

答案 1 :(得分:3)

不,他们不能。 dictionary不是线程安全的:

  

字典(TKey,TValue)可以支持   同时多个读者,同样长   因为集合没有被修改。   即便如此,通过一个列举   集合本质上不是一个   线程安全的程序。在罕见的   枚举争辩的情况   与写访问,集合   必须在整个过程中锁定   列举。允许收集   由多个线程访问   读书和写作,你必须   实现自己的同步。