我正在编写一个(希望是)线程安全的数据结构,它本质上是HashSets的ConcurrentDictionary的包装。
我想做的是有几个像这样的方法:
private ConcurrentDictionary<K, HashSet<V>> _index = new ConcurrentDictionary<K, HashSet<V>>();
public void Remove(V value)
{
// Remove all instances of value from _index
}
public void Remove(K key, V value)
{
// Remove value from _index[key]
}
我希望TryRemove会存在类似于ConcurrentDictionary.AddOrUpdate(key,newValue,Func)的东西,但没有运气。对于常规字典来说,这两种Remove方法都很容易编写,但是当涉及到将它们合并起来时,我感到很茫然。有人指出我正确的方向? :)