Пример #1
0
        /// <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();
        }
Пример #2
0
        /// <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);
        }