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

◆ SpinOnceCore()

void System.Threading.SpinWait.SpinOnceCore ( int sleep1Threshold)
inlineprivate

Definition at line 51 of file SpinWait.cs.

52 {
53 if ((_count >= 10 && ((_count >= sleep1Threshold && sleep1Threshold >= 0) || (_count - 10) % 2 == 0)) || Environment.IsSingleProcessor)
54 {
55 if (_count >= sleep1Threshold && sleep1Threshold >= 0)
56 {
57 Thread.Sleep(1);
58 }
59 else
60 {
61 int num = ((_count >= 10) ? ((_count - 10) / 2) : _count);
62 if (num % 5 == 4)
63 {
64 Thread.Sleep(0);
65 }
66 else
67 {
68 Thread.Yield();
69 }
70 }
71 }
72 else
73 {
74 int num2 = Thread.OptimalMaxSpinWaitsPerSpinIteration;
75 if (_count <= 30 && 1 << _count < num2)
76 {
77 num2 = 1 << _count;
78 }
79 Thread.SpinWait(num2);
80 }
81 _count = ((_count == int.MaxValue) ? 10 : (_count + 1));
82 }

References System.Threading.SpinWait._count, System.Environment.IsSingleProcessor, System.Threading.Thread.OptimalMaxSpinWaitsPerSpinIteration, System.Threading.Thread.Sleep(), System.Threading.Thread.SpinWait(), and System.Threading.Thread.Yield().

Referenced by System.Threading.SpinWait.SpinOnce(), and System.Threading.SpinWait.SpinOnce().