Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros
SpoolingTask.cs
Go to the documentation of this file.
2
4
5internal static class SpoolingTask
6{
8 {
9 Task task = new Task(delegate
10 {
11 int num = partitions.PartitionCount - 1;
12 for (int i = 0; i < num; i++)
13 {
14 QueryTask queryTask = new StopAndGoSpoolingTask<TInputOutput, TIgnoreKey>(i, groupState, partitions[i], channels[i]);
15 queryTask.RunAsynchronously(taskScheduler);
16 }
17 QueryTask queryTask2 = new StopAndGoSpoolingTask<TInputOutput, TIgnoreKey>(num, groupState, partitions[num], channels[num]);
18 queryTask2.RunSynchronously(taskScheduler);
19 });
20 groupState.QueryBegin(task);
21 task.RunSynchronously(taskScheduler);
22 groupState.QueryEnd(userInitiatedDispose: false);
23 }
24
26 {
27 Task task = new Task(delegate
28 {
29 for (int i = 0; i < partitions.PartitionCount; i++)
30 {
31 QueryTask queryTask = new PipelineSpoolingTask<TInputOutput, TIgnoreKey>(i, groupState, partitions[i], channels[i]);
32 queryTask.RunAsynchronously(taskScheduler);
33 }
34 });
35 groupState.QueryBegin(task);
36 task.Start(taskScheduler);
37 }
38
40 {
41 Task task = new Task(delegate
42 {
43 int num = partitions.PartitionCount - 1;
44 for (int i = 0; i < num; i++)
45 {
46 QueryTask queryTask = new ForAllSpoolingTask<TInputOutput, TIgnoreKey>(i, groupState, partitions[i]);
47 queryTask.RunAsynchronously(taskScheduler);
48 }
49 QueryTask queryTask2 = new ForAllSpoolingTask<TInputOutput, TIgnoreKey>(num, groupState, partitions[num]);
50 queryTask2.RunSynchronously(taskScheduler);
51 });
52 groupState.QueryBegin(task);
53 task.RunSynchronously(taskScheduler);
54 groupState.QueryEnd(userInitiatedDispose: false);
55 }
56}
void QueryEnd(bool userInitiatedDispose)
Task RunAsynchronously(TaskScheduler taskScheduler)
Definition QueryTask.cs:37
Task RunSynchronously(TaskScheduler taskScheduler)
Definition QueryTask.cs:30
static void SpoolStopAndGo< TInputOutput, TIgnoreKey >(QueryTaskGroupState groupState, PartitionedStream< TInputOutput, TIgnoreKey > partitions, SynchronousChannel< TInputOutput >[] channels, TaskScheduler taskScheduler)
static void SpoolPipeline< TInputOutput, TIgnoreKey >(QueryTaskGroupState groupState, PartitionedStream< TInputOutput, TIgnoreKey > partitions, AsynchronousChannel< TInputOutput >[] channels, TaskScheduler taskScheduler)
static void SpoolForAll< TInputOutput, TIgnoreKey >(QueryTaskGroupState groupState, PartitionedStream< TInputOutput, TIgnoreKey > partitions, TaskScheduler taskScheduler)