C#Dictionary并发添加或修改仅针对不同的键,是否必须使用ConcurrentDictionary?

时间:2016-10-11 13:34:45

标签: c# .net dictionary concurrency concurrentdictionary

我的词典仅支持addmodify操作,可以同时操作,但始终用于不同的键。键是int,值是引用类型。修改意味着更改值的某些属性。

我的问题是:

  1. 在这种情况下我是否需要使用ConcurrentDictionary?如果需要,它有什么帮助?
  2. 如果对同一个密钥进行并发修改,ConcurrentDictionary会帮助确保线程安全吗?我的理解不是,这是正确的吗?
  3. 谢谢!

2 个答案:

答案 0 :(得分:0)

最好的方法是查看MSDN文档。

对于ConcurrentDictionary,该网页为http://msdn.microsoft.com/en-us/library/dd287191.aspx

在线程安全部分,它被声明为&#34; ConcurrentDictionary<TKey, TValue>的所有公共成员和受保护成员都是线程安全的,可以从多个线程同时使用。&#34;

答案 1 :(得分:0)

  

在这种情况下我是否需要使用ConcurrentDictionary?如果需要,如何   它有帮助吗?

是的,如果多个线程同时添加或删除条目,则标准字典将无法正常运行。 (虽然如果没有其他人正在修改它,多个线程同时从中读取它是安全的。)

  

如果对同一个密钥进行并发修改,则会   ConcurrentDictionary有助于确保线程安全吗?我的理解是   不,这是对的吗?

如果你要问&#34;并发字典是否会阻止多个线程同时访问字典中的值?&#34;,那么不,它不会。

如果要防止多个线程同时访问同一个值,则需要使用某种并发控制,例如锁定。