我将ConcurrentDictionary声明如下
我担心的是,ConcurrentDictionary是线程安全的,但List不是线程安全的。当我尝试使用密钥访问此列表时,我是否必须在使用之前放置锁?或者ConcurrentDictionary会照顾它吗?
任何细节,都将深表感谢。
答案 0 :(得分:3)
ConcurrentDictionary
只会处理对词典的并发访问。任何导致列表内部副作用的代码,例如迭代它或添加值都必须带有额外的锁定机制,因为ConcurrentDictionary
不对此负责。
所以是的,您必须在列表周围添加锁定机制,或者只使用ConcurrentBag<T>
public static ConcurrentDictionary<int, ConcurrentBag<object>>