Esempio n. 1
0
 public BlockingList(BorrowStrategy strategy)
 {
     this.Strategy            = strategy;
     this._stack              = this.GetInnerCollection(strategy);
     this._blockingCollection = new BlockingCollection <T>(this._stack);
     this._deleted            = new HashSet <T>();
 }
Esempio n. 2
0
        private bool TryPeek(BorrowStrategy strategy, out T item)
        {
            switch (strategy)
            {
            case BorrowStrategy.LIFO:
                return(((ConcurrentStack <T>)_stack).TryPeek(out item));

            case BorrowStrategy.FIFO:
                return(((ConcurrentQueue <T>)_stack).TryPeek(out item));

            case BorrowStrategy.Random:
            default:
                return(((ConcurrentBag <T>)_stack).TryPeek(out item));
            }
        }
Esempio n. 3
0
        private IProducerConsumerCollection <T> GetInnerCollection(BorrowStrategy strategy)
        {
            switch (strategy)
            {
            case BorrowStrategy.LIFO:
                return(new ConcurrentStack <T>());

            case BorrowStrategy.FIFO:
                return(new ConcurrentQueue <T>());

            case BorrowStrategy.Random:
            default:
                return(new ConcurrentBag <T>());
            }
        }