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

◆ RangeManager()

System.Threading.Tasks.RangeManager.RangeManager ( long nFromInclusive,
long nToExclusive,
long nStep,
int nNumExpectedWorkers )
inlinepackage

Definition at line 13 of file RangeManager.cs.

14 {
16 _nStep = nStep;
17 if (nNumExpectedWorkers == 1)
18 {
19 nNumExpectedWorkers = 2;
20 }
21 ulong num = (ulong)(nToExclusive - nFromInclusive);
22 ulong num2 = num / (ulong)nNumExpectedWorkers;
23 num2 -= num2 % (ulong)nStep;
24 if (num2 == 0L)
25 {
26 num2 = (ulong)nStep;
27 }
28 int num3 = (int)(num / num2);
29 if (num % num2 != 0L)
30 {
31 num3++;
32 }
33 long num4 = (long)num2;
34 _use32BitCurrentIndex = IntPtr.Size == 4 && num4 <= int.MaxValue;
35 _indexRanges = new IndexRange[num3];
36 long num5 = nFromInclusive;
37 for (int i = 0; i < num3; i++)
38 {
42 num5 += num4;
43 if (num5 < num5 - num4 || num5 > nToExclusive)
44 {
45 num5 = nToExclusive;
46 }
48 }
49 }
readonly IndexRange[] _indexRanges
volatile StrongBox< long > _nSharedCurrentIndexOffset
Definition IndexRange.cs:13

References System.Threading.Tasks.IndexRange._bRangeFinished, System.Threading.Tasks.RangeManager._indexRanges, System.Threading.Tasks.RangeManager._nCurrentIndexRangeToAssign, System.Threading.Tasks.IndexRange._nFromInclusive, System.Threading.Tasks.IndexRange._nSharedCurrentIndexOffset, System.Threading.Tasks.RangeManager._nStep, System.Threading.Tasks.IndexRange._nToExclusive, System.Threading.Tasks.RangeManager._use32BitCurrentIndex, and System.L.