/// <summary> /// /// </summary> /// <param name="serial"></param> public void RemoveMany(IEnumerable <KeyT> key) { m_LockMultiDictionary.EnterWriteLock(); { m_MultiDictionary.RemoveMany(key); m_bIsValueChange = true; } m_LockMultiDictionary.ExitWriteLock(); }
/// <summary> /// /// </summary> /// <param name="serial"></param> public void RemoveMany(KeyT key, IEnumerable <ValueT> values) { MultiDictionary <KeyT, ValueT> newMultiDict = null; MultiDictionary <KeyT, ValueT> oldMultiDict = null; do { oldMultiDict = m_MultiDictionary; newMultiDict = new MultiDictionary <KeyT, ValueT>(m_AllowDuplicateValues); foreach (var item in oldMultiDict) { newMultiDict.AddMany(item.Key, item.Value); } newMultiDict.RemoveMany(key, values); } while (Interlocked.CompareExchange <MultiDictionary <KeyT, ValueT> >(ref m_MultiDictionary, newMultiDict, oldMultiDict) != oldMultiDict); }