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

◆ GetCount() [1/2]

static long System.Collections.Concurrent.ConcurrentQueue< T >.GetCount ( ConcurrentQueueSegment< T > head,
int headHead,
ConcurrentQueueSegment< T > tail,
int tailTail )
inlinestaticprivateinherited

Definition at line 182 of file ConcurrentQueue.cs.

183 {
184 long num = 0L;
185 int num2 = ((head == tail) ? tailTail : Volatile.Read(ref head._headAndTail.Tail)) - head.FreezeOffset;
186 if (headHead < num2)
187 {
188 headHead &= head._slotsMask;
189 num2 &= head._slotsMask;
190 num += ((headHead < num2) ? (num2 - headHead) : (head._slots.Length - headHead + num2));
191 }
192 if (head != tail)
193 {
194 for (ConcurrentQueueSegment<T> nextSegment = head._nextSegment; nextSegment != tail; nextSegment = nextSegment._nextSegment)
195 {
196 num += nextSegment._headAndTail.Tail - nextSegment.FreezeOffset;
197 }
198 num += tailTail - tail.FreezeOffset;
199 }
200 return num;
201 }

References System.L, and System.Threading.Volatile.Read().