ConcurrentDictionary和Dictionary对比
Posted zhuyapeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ConcurrentDictionary和Dictionary对比相关的知识,希望对你有一定的参考价值。
Dictionary非线程安全集合
代码测试会报错:集合已经改变
public class ConcurrentDictionaryTest { public void Run() { Dictionary<string, int> dic = new Dictionary<string, int>(); Task.Run(()=> { while (true) { foreach (var item in dic) { Console.WriteLine(item.Key); } } }); while (true) { for (int i = 0; i < 10000; i++) { dic[i.ToString()] = i; } } } }
ConcurrentDictionary线程安全集合
直接上代码测:这个不会报错。
public class ConcurrentDictionaryTest { public void Run() { ConcurrentDictionary<string, int> dic = new ConcurrentDictionary<string, int>(); Task.Run(()=> { while (true) { foreach (var item in dic) { Console.WriteLine(item.Key); } } }); while (true) { for (int i = 0; i < 10000; i++) { dic[i.ToString()] = i; } } } }
ConcurrentDictionary里面会有细粒度锁定,所以在增删查改基本不需要锁控制。
关于他们的速率看另外一篇微博:写入速率Dictionary快点,但在加锁读取情况ConcurrentDictionary更快。
代码详见:https://blog.csdn.net/conquerwave/article/details/50815557
以上是关于ConcurrentDictionary和Dictionary对比的主要内容,如果未能解决你的问题,请参考以下文章
什么时候应该使用 ConcurrentDictionary 和 Dictionary?
ConcurrentDictionary和Dictionary对比
一起来看CORE源码 ConcurrentDictionary