根据MSDN文档,ConcurrentDictionary类表示一组线程安全的键值对集合,可同时被多个线程访问。但我知道System.Collections.Concurrent类是为PLINQ设计的。 我有一个在服务器中保存在线客户端的Dictionary,并通过锁定对象使其线程安全。在我的情况下,我可以安全地用ConcurrentDictionary替换Dictionary吗?替换后性能会提高吗?在第5部分中,Joseph Albahari在这里提到,它是为并行编程而设计的。并发集合针对并行编程进行了调整,在除高度并发的情况外,传统集合的性能优于它们。线程安全的集合不能保证使用它的代码是线程安全的。如果您在另一个线程修改并发集合时枚举它,不会抛出异常。相反,您会得到旧内容和新内容的混合。没有List的并发版本。并发堆栈、队列和包类在内部使用链表实现。这使它们的内存效率低于非并发堆栈和队列类,但对于并发访问来说更好,因为链表有助于无锁或低锁定实现。(因为将节点插入到链表中只需要更新几个引用,而将元素插入到类似于List的结构中可能需要移动数千个现有元素。)