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

◆ TryDequeueSlow() [2/2]

bool System.Threading.Tasks.SingleProducerSingleConsumerQueue< T >.TryDequeueSlow ( ref Segment segment,
ref T[] array,
[MaybeNullWhen(false)] out T result )
inlineprivate

Definition at line 177 of file SingleProducerSingleConsumerQueue.cs.

178 {
179 if (segment._state._last != segment._state._lastCopy)
180 {
181 segment._state._lastCopy = segment._state._last;
182 return TryDequeue(out result);
183 }
184 if (segment._next != null && segment._state._first == segment._state._last)
185 {
186 segment = segment._next;
187 array = segment._array;
188 _head = segment;
189 }
190 int first = segment._state._first;
191 if (first == segment._state._last)
192 {
193 result = default(T);
194 return false;
195 }
196 result = array[first];
197 array[first] = default(T);
198 segment._state._first = (first + 1) & (segment._array.Length - 1);
199 segment._state._lastCopy = segment._state._last;
200 return true;
201 }

References System.Threading.Tasks.SingleProducerSingleConsumerQueue< T >._head, System.array, and System.Threading.Tasks.SingleProducerSingleConsumerQueue< T >.TryDequeue().