1 write to _channels
System.Linq.Parallel (1)
System\Linq\Parallel\Merging\AsynchronousChannelMergeEnumerator.cs (1)
53_channels = channels;
21 references to _channels
System.Linq.Parallel (21)
System\Linq\Parallel\Merging\AsynchronousChannelMergeEnumerator.cs (21)
55_done = new bool[_channels.Length]; // Initialized to { false }, i.e. no channels done. 71if (_channelIndex == -1 || _channelIndex == _channels.Length) 98if (index == _channels.Length) 104if (!_done[index] && _channels[index].TryDequeue(ref _currentElement)) 106_channelIndex = (index + 1) % _channels.Length; 127while ((currChannelIndex = _channelIndex) < _channels.Length) 129AsynchronousChannel<T> current = _channels[currChannelIndex]; 137_channelIndex = (currChannelIndex + 1) % _channels.Length; 165Debug.Assert(_channels[currChannelIndex].IsDone, "thought this channel was done"); 166Debug.Assert(_channels[currChannelIndex].IsChunkBufferEmpty, "thought this channel was empty"); 170if (++doneChannels == _channels.Length) 173_channelIndex = currChannelIndex = _channels.Length; 179_channelIndex = currChannelIndex = (currChannelIndex + 1) % _channels.Length; 194for (int i = 0; i < _channels.Length; i++) 197if (!_done[i] && _channels[i].TryDequeue(ref _currentElement, ref channelIsDone)) 210if (++doneChannels == _channels.Length) 214_channelIndex = currChannelIndex = _channels.Length; 221if (currChannelIndex == _channels.Length) 252for (int i = 0; i < _channels.Length; i++) 260_channels[i].DoneWithDequeueWait(); 271Debug.Assert(currChannelIndex == _channels.Length);