/// <summary> /// Creates new queue /// </summary> /// <param name="maxPriority">Maximum priority</param> /// <param name="maxParallelUsingItemsCount">Maximum allowed items to dequeue with same address value</param> public ConcurrentQueueWithPriorityAndAddressUsageControl(int maxPriority, int maxParallelUsingItemsCount) { _maxParallelUsingItemsCount = maxParallelUsingItemsCount; _itemCollections = new List <List <AddressedItem <TKey, TItem> > >(); for (int i = 0; i < maxPriority; ++i) { _itemCollections.Add(new List <AddressedItem <TKey, TItem> >()); } _itemCounters = new WaitableMultiCounter <TKey>(); }