我喜欢 concurrentdictionary 并使用它两个对象:

 ConcurrentDictionary<datetime,myObj> myIndexByDate
 ConcurrentDictionary<myObjSummary, ConcurrentDictionary<int, myObj> myObjectSummary Index
.

这两个对象需要保持同步。是这样做的唯一方法是使用锁,从而避免并发词典的所有好处?

有帮助吗?

解决方案

我会用2个字典创建自定义类,并仅在易感更改字典的方法上使用锁定(添加,删除)。

您不会丢失并发字典的好处,因为此方法需要更少的代码,而不是您必须使用的正常字典进行。

其他提示

concurrentdictionary仅在特定实例上的操作上的“线程安全”。例如虽然正在调用concurrentdictionary.tryadd()调用,但没有其他线程可以修改集合...

这并不意味着在从一个字典中获取值并将其添加到另一个字典中,同时您将该值仍然存在于原始字典中,同时将其添加到第二个字典中。

您可能有一个不变的细节,当您从一个字典移动一个值到另一个时,可以删除原始字典中的值(或至少值,但这是Conncurrentdictionary难以保证一点难以保证。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top