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

◆ Spool()

static void System.Linq.Parallel.OrderPreservingSpoolingTask< TInputOutput, TKey >.Spool ( QueryTaskGroupState groupState,
PartitionedStream< TInputOutput, TKey > partitions,
Shared< TInputOutput[]> results,
TaskScheduler taskScheduler )
inlinestaticpackage

Definition at line 18 of file OrderPreservingSpoolingTask.cs.

19 {
20 int maxToRunInParallel = partitions.PartitionCount - 1;
21 SortHelper<TInputOutput, TKey>[] sortHelpers = SortHelper<TInputOutput, TKey>.GenerateSortHelpers(partitions, groupState);
22 Task task = new Task(delegate
23 {
24 for (int j = 0; j < maxToRunInParallel; j++)
25 {
26 QueryTask queryTask = new OrderPreservingSpoolingTask<TInputOutput, TKey>(j, groupState, results, sortHelpers[j]);
27 queryTask.RunAsynchronously(taskScheduler);
28 }
29 QueryTask queryTask2 = new OrderPreservingSpoolingTask<TInputOutput, TKey>(maxToRunInParallel, groupState, results, sortHelpers[maxToRunInParallel]);
30 queryTask2.RunSynchronously(taskScheduler);
31 });
32 groupState.QueryBegin(task);
33 task.RunSynchronously(taskScheduler);
34 for (int i = 0; i < sortHelpers.Length; i++)
35 {
36 sortHelpers[i].Dispose();
37 }
38 groupState.QueryEnd(userInitiatedDispose: false);
39 }
QueryTask(int taskIndex, QueryTaskGroupState groupState)
Definition QueryTask.cs:19

References System.Linq.Parallel.SortHelper< TInputOutput, TKey >.Dispose(), System.Linq.Parallel.SortHelper< TInputOutput, TKey >.GenerateSortHelpers(), System.Linq.Parallel.QueryTaskGroupState.QueryBegin(), System.Linq.Parallel.QueryTaskGroupState.QueryEnd(), System.Linq.Parallel.QueryTask.RunAsynchronously(), System.Linq.Parallel.QueryTask.RunSynchronously(), and System.task.