Пример #1
0
        /// <summary>
        ///     Initializes a new instance of <see cref="LockFreeArrayBasedDictionary{TKey,TValue}" />.
        /// </summary>
        /// <param name="options">The options that specify the service objects used by this dictionary.</param>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="options" /> is null.</exception>
        public LockFreeArrayBasedDictionary(Options options)
        {
            options.MustNotBeNull(nameof(options));

            _keyComparer               = options.KeyComparer;
            _valueComparer             = options.ValueComparer;
            _growArrayStrategy         = options.GrowArrayStrategy;
            _growArrayProcessFactory   = options.GrowArrayProcessFactory;
            _backgroundCopyTaskFactory = options.BackgroundCopyTaskFactory;
            _currentArray              = CreateInitialArray();
            _setNewArray               = SetNewArray;
        }
Пример #2
0
        public GrowArrayProcess(ConcurrentArray <TKey, TValue> oldArray,
                                int newArraySize,
                                ExchangeArray <TKey, TValue> setNewArray,
                                int maximumNumberOfItemsCopiedDuringHelp = DefaultMaximumNumberOfItemsCopiedDuringHelp)
        {
            oldArray.MustNotBeNull(nameof(oldArray));
            newArraySize.MustBeGreaterThan(oldArray.Capacity, nameof(newArraySize));
            setNewArray.MustNotBeNull(nameof(setNewArray));
            maximumNumberOfItemsCopiedDuringHelp.MustNotBeLessThan(0, nameof(maximumNumberOfItemsCopiedDuringHelp));

            OldArray     = oldArray;
            NewArraySize = newArraySize;
            _setNewArray = setNewArray;
            MaximumNumberOfItemsCopiedDuringHelp = maximumNumberOfItemsCopiedDuringHelp;
        }
 public GrowArrayProcess <TKey, TValue> CreateGrowArrayProcess(ConcurrentArray <TKey, TValue> oldArray, int newArraySize, ExchangeArray <TKey, TValue> setNewArray)
 {
     return(new GrowArrayProcess <TKey, TValue>(oldArray, newArraySize, setNewArray, _maximumNumberOfItemsCopiedDuringHelp));
 }
Пример #4
0
        public GrowArrayProcess <TKey, TValue> CreateGrowArrayProcess(ConcurrentArray <TKey, TValue> oldArray, int newArraySize, ExchangeArray <TKey, TValue> setNewArray)
        {
            var growArrayProcess = _decoratedFactory.CreateGrowArrayProcess(oldArray, newArraySize, setNewArray);

            growArrayProcess.Logger = _logger;
            return(growArrayProcess);
        }