61 for (
int i = 0; i <
_mergeHelper._partitions.PartitionCount; i++)
94 return _producerHeap.Count > 0;
99 if (!
_mergeHelper._taskGroupState.CancellationState.MergedCancellationToken.IsCancellationRequested)
149 element =
queue.Dequeue();
166 element =
queue.Dequeue();
177 for (
int i = 0; i < num; i++)
224 if (keyComparer ==
Util.GetDefaultComparer<
int>())
Enumerator GetEnumerator()
QueryTaskGroupState _taskGroupState
OrderedPipeliningMergeEnumerator(OrderPreservingPipeliningMergeHelper< TOutput, TKey > mergeHelper, IComparer< Producer< TKey > > producerComparer)
readonly TOutput[] _producerNextElement
readonly Queue< Pair< TKey, TOutput > >[] _privateBuffer
bool TryGetPrivateElement(int producer, ref Pair< TKey, TOutput > element)
bool TryWaitForElement(int producer, ref Pair< TKey, TOutput > element)
readonly FixedMaxHeap< Producer< TKey > > _producerHeap
readonly OrderPreservingPipeliningMergeHelper< TOutput, TKey > _mergeHelper
int Compare(Producer< TKey > x, Producer< TKey > y)
readonly IComparer< TKey > _keyComparer
ProducerComparer(IComparer< TKey > keyComparer)
TOutput[] GetResultsAsArray()
readonly bool[] _producerDone
readonly TaskScheduler _taskScheduler
readonly bool[] _producerWaiting
readonly PartitionedStream< TOutput, TKey > _partitions
readonly Queue< Pair< TKey, TOutput > >[] _buffers
readonly bool[] _consumerWaiting
readonly object[] _bufferLocks
readonly IComparer< Producer< TKey > > _producerComparer
OrderPreservingPipeliningMergeHelper(PartitionedStream< TOutput, TKey > partitions, TaskScheduler taskScheduler, CancellationState cancellationState, bool autoBuffered, int queryId, IComparer< TKey > keyComparer)
readonly bool _autoBuffered
readonly QueryTaskGroupState _taskGroupState
static readonly ProducerComparerInt Instance
void QueryEnd(bool userInitiatedDispose)
static bool Wait(object obj, int millisecondsTimeout)
static void Pulse(object obj)