Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ Break() [2/3]

static void System.Threading.Tasks.ParallelLoopState.Break ( int iteration,
ParallelLoopStateFlags32 pflags )
inlinestaticpackageinherited

Definition at line 54 of file ParallelLoopState.cs.

55 {
56 int oldState = 0;
57 if (!pflags.AtomicLoopStateUpdate(2, 13, ref oldState))
58 {
59 if (((uint)oldState & 4u) != 0)
60 {
62 }
63 return;
64 }
65 int lowestBreakIteration = pflags._lowestBreakIteration;
66 if (iteration >= lowestBreakIteration)
67 {
68 return;
69 }
70 SpinWait spinWait = default(SpinWait);
71 while (Interlocked.CompareExchange(ref pflags._lowestBreakIteration, iteration, lowestBreakIteration) != lowestBreakIteration)
72 {
73 spinWait.SpinOnce();
74 lowestBreakIteration = pflags._lowestBreakIteration;
75 if (iteration > lowestBreakIteration)
76 {
77 break;
78 }
79 }
80 }
static string ParallelState_Break_InvalidOperationException_BreakAfterStop
Definition SR.cs:24
Definition SR.cs:7

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