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

◆ SpoolingWork()

override void System.Linq.Parallel.OrderPreservingPipeliningSpoolingTask< TOutput, TKey >.SpoolingWork ( )
inlineprotected

Definition at line 41 of file OrderPreservingPipeliningSpoolingTask.cs.

42 {
43 TOutput currentElement = default(TOutput);
44 TKey currentKey = default(TKey);
45 int num = ((!_autoBuffered) ? 1 : 16);
49 int i;
50 do
51 {
52 for (i = 0; i < num; i++)
53 {
54 if (!partition.MoveNext(ref currentElement, ref currentKey))
55 {
56 break;
57 }
58 array[i] = new Pair<TKey, TOutput>(currentKey, currentElement);
59 }
60 if (i == 0)
61 {
62 break;
63 }
65 {
66 if (mergedCancellationToken.IsCancellationRequested)
67 {
68 break;
69 }
70 for (int j = 0; j < i; j++)
71 {
73 }
75 {
78 }
79 if (_buffers[_partitionIndex].Count >= 8192)
80 {
83 }
84 }
85 }
86 while (i == num);
87 }
static bool Wait(object obj, int millisecondsTimeout)
Definition Monitor.cs:87
static void Pulse(object obj)
Definition Monitor.cs:103

References System.Linq.Parallel.OrderPreservingPipeliningSpoolingTask< TOutput, TKey >._autoBuffered, System.Linq.Parallel.OrderPreservingPipeliningSpoolingTask< TOutput, TKey >._bufferLock, System.Linq.Parallel.OrderPreservingPipeliningSpoolingTask< TOutput, TKey >._buffers, System.Linq.Parallel.OrderPreservingPipeliningSpoolingTask< TOutput, TKey >._consumerWaiting, System.Linq.Parallel.OrderPreservingPipeliningSpoolingTask< TOutput, TKey >._partition, System.Linq.Parallel.OrderPreservingPipeliningSpoolingTask< TOutput, TKey >._partitionIndex, System.Linq.Parallel.OrderPreservingPipeliningSpoolingTask< TOutput, TKey >._producerWaiting, System.Linq.Parallel.OrderPreservingPipeliningSpoolingTask< TOutput, TKey >._taskGroupState, System.array, System.Linq.Parallel.QueryTaskGroupState.CancellationState, System.Linq.Parallel.CancellationState.MergedCancellationToken, System.Threading.Monitor.Pulse(), and System.Threading.Monitor.Wait().