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

◆ Break() [3/3]

static void System.Threading.Tasks.ParallelLoopState.Break ( long iteration,
ParallelLoopStateFlags64 pflags )
inlinestaticpackageinherited

Definition at line 82 of file ParallelLoopState.cs.

83 {
84 int oldState = 0;
85 if (!pflags.AtomicLoopStateUpdate(2, 13, ref oldState))
86 {
87 if (((uint)oldState & 4u) != 0)
88 {
90 }
91 return;
92 }
93 long lowestBreakIteration = pflags.LowestBreakIteration;
94 if (iteration >= lowestBreakIteration)
95 {
96 return;
97 }
98 SpinWait spinWait = default(SpinWait);
99 while (Interlocked.CompareExchange(ref pflags._lowestBreakIteration, iteration, lowestBreakIteration) != lowestBreakIteration)
100 {
101 spinWait.SpinOnce();
102 lowestBreakIteration = pflags.LowestBreakIteration;
103 if (iteration > lowestBreakIteration)
104 {
105 break;
106 }
107 }
108 }
static string ParallelState_Break_InvalidOperationException_BreakAfterStop
Definition SR.cs:24
Definition SR.cs:7

References System.Threading.Tasks.ParallelLoopStateFlags64._lowestBreakIteration, System.Threading.Tasks.ParallelLoopStateFlags.AtomicLoopStateUpdate(), System.Threading.Interlocked.CompareExchange(), System.Threading.Tasks.ParallelLoopStateFlags64.LowestBreakIteration, System.SR.ParallelState_Break_InvalidOperationException_BreakAfterStop, and System.Threading.SpinWait.SpinOnce().