所以我在这里实现了一些缓存层。但是,我仍然坚持
ConcurrentDictionary<SomeKey,HashSet<SomeKey2>>
我需要确保HashSet上的操作也是线程安全的(ergo Update是线程安全的)。是否有可能以任何简单的方式或我必须在UpdateFactory委托中同步?如果答案是肯定的(我认为是这样的话)你之前遇到过这个问题并解决了吗?
我想避免使用ConcurrentDictionaries的ConcurrentDictionary,因为它们分配了很多同步对象,我可能在这个东西中有大约一百万个条目,所以我希望GC上的压力更小。 选择HashSet是因为它保证了插入,删除和访问的摊销不变成本。
上述结构将用作较大数据集的索引,其中列作为键(SomeKey和Somekey2),就像数据库索引一样。
答案 0 :(得分:1)
好的,最后我决定使用Immutable set和lock striping,因为它实现和理解起来相当简单。如果我需要更多的写入性能(不复制插入时的整个哈希集),我将使用条带化实现读/写锁 - 无论如何应该没问题。 谢谢你的建议。