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

◆ TryDequeueSlow()

bool System.Collections.Concurrent.SingleProducerSingleConsumerQueue< T >.TryDequeueSlow ( Segment segment,
T[] array,
bool peek,
[MaybeNullWhen(false)] out T result )
inlineprivate

Definition at line 179 of file SingleProducerSingleConsumerQueue.cs.

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

References System.Collections.Concurrent.SingleProducerSingleConsumerQueue< T >._head, System.array, System.Collections.Concurrent.SingleProducerSingleConsumerQueue< T >.TryDequeue(), and System.Collections.Concurrent.SingleProducerSingleConsumerQueue< T >.TryPeek().

Referenced by System.Collections.Concurrent.SingleProducerSingleConsumerQueue< T >.TryDequeue(), and System.Collections.Concurrent.SingleProducerSingleConsumerQueue< T >.TryPeek().