/// <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; }
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)); }
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); }