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

◆ SnapForObservation()

void System.Collections.Concurrent.ConcurrentQueue< T >.SnapForObservation ( out ConcurrentQueueSegment< T > head,
out int headHead,
out ConcurrentQueueSegment< T > tail,
out int tailTail )
inlineprivateinherited

Definition at line 233 of file ConcurrentQueue.cs.

234 {
236 {
237 head = _head;
238 tail = _tail;
240 while (true)
241 {
242 concurrentQueueSegment._preservedForObservation = true;
243 if (concurrentQueueSegment == tail)
244 {
245 break;
246 }
248 }
249 tail.EnsureFrozenForEnqueues();
250 headHead = Volatile.Read(ref head._headAndTail.Head);
251 tailTail = Volatile.Read(ref tail._headAndTail.Tail);
252 }
253 }
volatile ConcurrentQueueSegment< T > _tail
volatile ConcurrentQueueSegment< T > _head
static bool Read(ref bool location)
Definition Volatile.cs:67

References System.Collections.Concurrent.ConcurrentQueue< T >._crossSegmentLock, System.Collections.Concurrent.ConcurrentQueue< T >._head, System.Collections.Concurrent.ConcurrentQueue< T >._tail, and System.Threading.Volatile.Read().

Referenced by System.Collections.Concurrent.ConcurrentQueue< T >.CopyTo(), System.Collections.Concurrent.ConcurrentQueue< T >.GetEnumerator(), and System.Collections.Concurrent.ConcurrentQueue< T >.ToArray().