public FlatGenerator(INSGenerator sourceGenerator) : base(null) { this.sourceGenerator = sourceGenerator; iterators = new MaybeQueue <NSIterator>(); currentIterator = none <NSIterator>(); }
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; }