【发布时间】:2014-08-07 12:14:06
【问题描述】:
我声明 ConcurrentDictionary 如下
我担心的是,ConcurrentDictionary 是线程安全的,但 List 不是线程安全的。当我尝试使用钥匙访问此列表时,我是否必须在使用之前放置锁?还是 ConcurrentDictionary 会处理它?
任何细节,将不胜感激。
【问题讨论】:
标签: c# .net multithreading collections concurrency
我声明 ConcurrentDictionary 如下
我担心的是,ConcurrentDictionary 是线程安全的,但 List 不是线程安全的。当我尝试使用钥匙访问此列表时,我是否必须在使用之前放置锁?还是 ConcurrentDictionary 会处理它?
任何细节,将不胜感激。
【问题讨论】:
标签: c# .net multithreading collections concurrency
ConcurrentDictionary 只会处理对字典的并发访问。任何在列表中引起副作用的代码,例如迭代它或添加值都必须附带额外的锁定机制,因为ConcurrentDictionary 不对此负责。
所以是的,你必须在列表周围添加一个锁定机制,或者简单地使用ConcurrentBag<T>
public static ConcurrentDictionary<int, ConcurrentBag<object>>
【讨论】: