我有四级数据结构定义如下:
Dictionary<Type1, Dictionary<Type2, Dictionary<Type3, List<Type4>>>>
整个事情都封装在一个类中,该类也保持线程安全。目前,它只是在读取/操作数据时锁定整个集合(读取比写入更常见几个数量级)。
我正在考虑更换Dictionary
with ConcurrentDictionary http://msdn.microsoft.com/en-us/library/dd287191.aspx and List
with ConcurrentBag http://msdn.microsoft.com/en-us/library/dd381779.aspx(其项目不必订购)。
如果这样做,我可以消除锁并确保并发集合能够正确完成其工作吗?
我迟到了将近一年才提出这个问题……但以防万一有人发现自己处于与 Matěj Zábský 类似的境地,问问自己:
你能用一个Dictionary<Tuple<Type1, Type2, Type3>, List<Type4>>
反而?
使用起来要容易得多,并且考虑到哈希表(即字典)是 O(1) 的数据结构,具有相当大的常数分量(如果您转向ConcurrentDictionary
)它可能也会执行得更快。它还会使用更少的内存,并且转换为非常简单ConcurrentDictionary
.
当然,如果您需要枚举所有给定的Type2
对于给定的Type1
关键,嵌套字典可能是正确的选择。但这是一个要求吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)