.net 多线程可以修改字典吗?

.net 多线程可以修改字典吗?,.net,multithreading,c#-3.0,.net,Multithreading,C# 3.0,在C#中,如果每个线程只访问字典中的一个元素而从不访问另一个元素,那么多个线程是否可以读写字典?不,它们不能。A不是线程安全的: 字典(TKey,TValue)可以支持 同时多个读卡器,只要 因为集合未被修改。 即便如此,通过 收藏本质上不是一种艺术 线程安全程序。难得 枚举争用的情况 通过写访问,集合 必须在整个过程中锁定 枚举。允许收集 要由多个线程访问的 阅读和写作,你必须 实现您自己的同步 不,字典不是线程安全的 修改作为值存储在字典中的引用类型(对象)的内容除外 在.NET4中,我们将

在C#中,如果每个线程只访问字典中的一个元素而从不访问另一个元素,那么多个线程是否可以读写字典?

不,它们不能。A不是线程安全的:

字典(TKey,TValue)可以支持 同时多个读卡器,只要 因为集合未被修改。 即便如此,通过 收藏本质上不是一种艺术 线程安全程序。难得 枚举争用的情况 通过写访问,集合 必须在整个过程中锁定 枚举。允许收集 要由多个线程访问的 阅读和写作,你必须 实现您自己的同步


不,字典不是线程安全的

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

在.NET4中,我们将有
System.Collections.Concurrent.ConcurrentDictionary

是的,在C#4.0中有
ConcurrentDictionary
类(),在C#3中,您必须实现同步机制(
lock
ReaderWriterLockSlim
,…)