您认为哪个人可以找到{。3}} .Net框架4的部分用法?
有没有人使用过并发词典,若有,为什么?如果有任何例子会很棒。
我可以想到它在工厂模式中的用途,如果它已经初始化,你想要存储类的不同实例。例如。 Hibernates SessionFactory。你觉得怎么样?
答案 0 :(得分:4)
我大量使用它来缓存场景。 ConcurrentDictionary
,尤其是与Lazy<T>
结合使用时,对于caching results when construction of a type is expensive非常有用,并且可以在多线程场景中正常运行。
答案 1 :(得分:2)
每当我不想担心并行访问字典时 - 也就是说我有一些微小的HTTP Web服务器应用程序在字典结构中记录/缓存一些请求数据 - 可以有任意数量的并发请求而我不想处理必须手动lock
字典。
这不仅仅是你不必自己做的事情,而且可能会出错,而框架会为你解决这个问题。
答案 2 :(得分:2)
我们使用它来缓存多线程应用程序中的对象...性能非常好而且不用担心lock
或类似的......
答案 3 :(得分:2)
您需要线程安全的任何基本缓存都是候选缓存,尤其适用于本质上具有高度线程性的Web应用程序。字典需要锁定;独家或读者/作者(后者对代码更尴尬)。哈希表对于读者来说是自动线程安全的(需要锁定编写者),但通常涉及密钥的装箱(有时是值),并且没有静态类型安全。
然而,并发字典非常友好;没有锁码,完全是线程安全的。比读取器/写入器锁更少的开销(包括“苗条”变种)。