c# - 将并发字典保存线程不安全的集合是否需要在C#中锁定

标签 c# .net multithreading collections concurrency

我声明如下ConcurrentDictionary

我担心的是,ConcurrentDictionary是线程安全的,但是List不是线程安全的。当我尝试使用键访问此列表时,是否需要在使用前放置锁?还是ConcurrentDictionary会照顾好它?

任何细节,将由衷的感谢。

最佳答案

ConcurrentDictionary仅负责对字典的并发访问。任何在列表内引起副作用的代码(例如对其进行迭代或添加值)都必须带有附加的锁定机制,因为ConcurrentDictionary对此不承担任何责任。

因此,是的,您将必须在列表周围添加锁定机制,或仅使用ConcurrentBag<T>

public static ConcurrentDictionary<int, ConcurrentBag<object>>

关于c# - 将并发字典保存线程不安全的集合是否需要在C#中锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25182269/

相关文章:

.net - 如何在TeamCity 5中包含完整的PartCover结果?

java - Future 中的代码是否有机会在之后的主线程中的代码之前运行?

c++ - pthread_mutex_wait 多个生产者和消费者

c# - 如何防止一个方法跨多个线程运行?

c# 扩展方法和属性

c# - 如何在浏览代码时显示<returns>内容?

c# - 在 MVC 应用程序中显示/隐藏文本

c# - C# 中的单例模式

c# - 正确填充多维数组

c# - 如何在我的代码中获取具有非标准名称的事件处理程序列表?