我应该如何保持2个并发词典?
-
11-12-2019 - |
题
我喜欢 concurrentdictionary 并使用它两个对象:
ConcurrentDictionary<datetime,myObj> myIndexByDate
ConcurrentDictionary<myObjSummary, ConcurrentDictionary<int, myObj> myObjectSummary Index
.
这两个对象需要保持同步。是这样做的唯一方法是使用锁,从而避免并发词典的所有好处?
解决方案
我会用2个字典创建自定义类,并仅在易感更改字典的方法上使用锁定(添加,删除)。
您不会丢失并发字典的好处,因为此方法需要更少的代码,而不是您必须使用的正常字典进行。
其他提示
concurrentdictionary仅在特定实例上的操作上的“线程安全”。例如虽然正在调用concurrentdictionary.tryadd()调用,但没有其他线程可以修改集合...
这并不意味着在从一个字典中获取值并将其添加到另一个字典中,同时您将该值仍然存在于原始字典中,同时将其添加到第二个字典中。
您可能有一个不变的细节,当您从一个字典移动一个值到另一个时,可以删除原始字典中的值(或至少值值,但这是Conncurrentdictionary难以保证一点难以保证。
不隶属于 StackOverflow