Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ InitializePartitions()

void System.Linq.Parallel.PartitionedDataSource< T >.InitializePartitions ( IEnumerable< T > source,
int partitionCount,
bool useStriping )
inlineprivate

Definition at line 402 of file PartitionedDataSource.cs.

403 {
405 {
406 source = parallelEnumerableWrapper.WrappedEnumerable;
407 }
408 if (source is IList<T> data)
409 {
411 T[] array2 = source as T[];
412 int num = -1;
413 if (useStriping)
414 {
415 num = Scheduling.GetDefaultChunkSize<T>();
416 if (num < 1)
417 {
418 num = 1;
419 }
420 }
421 for (int i = 0; i < partitionCount; i++)
422 {
423 if (array2 != null)
424 {
425 if (useStriping)
426 {
427 array[i] = new ArrayIndexRangeEnumerator(array2, partitionCount, i, num);
428 }
429 else
430 {
431 array[i] = new ArrayContiguousIndexRangeEnumerator(array2, partitionCount, i);
432 }
433 }
434 else if (useStriping)
435 {
436 array[i] = new ListIndexRangeEnumerator(data, partitionCount, i, num);
437 }
438 else
439 {
440 array[i] = new ListContiguousIndexRangeEnumerator(data, partitionCount, i);
441 }
442 }
444 }
445 else
446 {
448 }
449 }
static QueryOperatorEnumerator< T, int >[] MakePartitions(IEnumerator< T > source, int partitionCount)
QueryOperatorEnumerator< TElement, TKey >[] _partitions

References System.Linq.Parallel.PartitionedStream< T, int >._partitions, System.array, System.Linq.Parallel.PartitionedDataSource< T >.MakePartitions(), and System.Linq.source.

Referenced by System.Linq.Parallel.PartitionedDataSource< T >.PartitionedDataSource().