我正在编写一个(希望如此)线程安全的数据结构,它本质上是一个 HashSet 的 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 方法都很容易编写,但是在并发它们时,我很茫然。有人指出我正确的方向吗?:)