Example #1
0
 public FlatGenerator(INSGenerator sourceGenerator)
     : base(null)
 {
     this.sourceGenerator = sourceGenerator;
     iterators            = new MaybeQueue <NSIterator>();
     currentIterator      = none <NSIterator>();
 }
Example #2
0
        protected void balanceQueues(object sender, JobEmptyQueueArgs e)
        {
            if (totalCount() < refillThreshold)
            {
                e.Quit = true;
                return;
            }

            var newQueue = new MaybeQueue <Action <int> >();

            for (var i = 0; i < processorCount; i++)
            {
                while (queue.Dequeue(i).If(out var action))
                {
                    newQueue.Enqueue(action);
                }
            }

            queue.ResetCurrentAffinity();
            while (newQueue.Dequeue().If(out var item))
            {
                queue.Enqueue(item);
            }

            e.Quit = false;
        }