【发布时间】:2018-06-17 22:57:29
【问题描述】:
似乎没有办法嵌套 ConcurrentDictionary 以便它们共享一个锁
我正在尝试创建一个类,它将用锁包装一个 3 深的嵌套字典
这样我就可以执行 NestedDict[k1][k2][k3] 并以并发安全的方式获取值 并执行 NestedDict[k1][k2] 并获得 ConcurrentDictionary 或等效项。
我不是在寻找继承或组合ConcurrentDictionary<Tuple<TK1,TK2,TK3>,V> 的解决方案,因为它不一样,它不允许我有效地获取 dict[k1, k2] 的所有键
如何实现?
是否有现有的通用库/代码显示这种嵌套字典实现(包括迭代器等)?
【问题讨论】:
-
你希望这个类实现什么契约? (如:它应该保证什么线程安全)也许并发字典包装器会在这里做。您不必继承本身,您也可以实现 IDictionary 接口并使用私有字典。
-
无论如何,使用三层嵌套泛型几乎总是一种代码味道,我强烈建议您重构该代码并简化它。
-
合同应该与 ConcurrentDictionary 的合同完全相同,但是我不确定从嵌套 ConcurrentDictionarys 继承的锁定含义。我可以像你说的那样自己实现 IDictionary 但我的问题仍然是如何覆盖嵌套访问 []
-
你能实现
this[K1, K2, K3]吗? -
这感觉像是一个 XY 问题 - meta.stackexchange.com/questions/66377/what-is-the-xy-problem。 为什么你需要这个?