如何确保集合的ConcurrentDictionary线程安全
本文关键字:ConcurrentDictionary 线程 安全 集合 何确保 确保 | 更新日期: 2023-09-27 18:24:09
所以我在这里实现了一些缓存层。特别是我被卡住了
ConcurrentDictionary<SomeKey,HashSet<SomeKey2>>
我需要确保对HashSet的操作也是线程安全的(ergo-Update是线程安全的)。是否可以通过任何简单的方式实现,或者我是否必须在UpdateFactory委托中进行同步?如果答案是肯定的(我想是的),你们中的任何一个人以前遇到过这个问题并解决了它吗?
我想避免并发字典的并发字典,因为它们分配了很多同步对象,而且我可能在这件事上有大约一百万个条目,所以我想减少GC的压力。之所以选择HashSet,是因为它保证了插入、删除和访问的摊余恒定成本。
上述结构将用作较大数据集的索引,其中to列作为键(SomeKey和Somekey2),非常类似于数据库索引。
好的,所以最后我决定使用不可变集和锁条带化,因为它实现和理解起来相当简单。如果我在写操作上需要更高的性能(插入时不复制整个哈希集),我将使用条带化实现读写器锁——这应该很好。谢谢你的建议。