Mat*_*ský 4 .net c# concurrency .net-4.0 parallel-extensions
我有四个级别的数据结构定义如下:
Dictionary<Type1, Dictionary<Type2, Dictionary<Type3, List<Type4>>>>
Run Code Online (Sandbox Code Playgroud)
整个事情被封装在一个同样保持线程安全的类中.目前它只是在读取/操作数据时锁定整个集合(读取比写入更常见).
我正在考虑更换Dictionarywith ConcurrentDictionary和Listwith ConcurrentBag(它的项目不必订购).
如果我这样做,我可以消除锁定并确保并发集合能够正常工作吗?
我差不多晚了一年......但是如果有人发现自己处于与MatějZábský相似的位置,请问自己:
你能用Dictionary<Tuple<Type1, Type2, Type3>, List<Type4>>吗?
使用起来相当容易,并且考虑到散列表(即字典)是O(1)数据结构,具有一定程度上很大的常量组件(如果你移动到a,则更是如此ConcurrentDictionary)它也可能表现得更快.它也使用更少的内存,并且转换为一个非常简单ConcurrentDictionary.
当然,如果您需要枚举给Type2定Type1键的所有给定,嵌套字典可能是要走的路.但这是一个要求吗?