public override Value Next() { if (currentIterator.IsSome) { var value = currentIterator.Value.Next(); if (value.IsNil) { currentIterator = none <NSIterator>(); } else { return(value); } } while (iterators.Count > 0) { currentIterator = iterators.Dequeue(); if (currentIterator.IsNone) { return(NilValue); } currentIterator.Value.Reset(); var value = currentIterator.Value.Next(); if (!value.IsNil) { return(value); } } return(NilValue); }
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; }