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

◆ EnqueueSlow() [2/2]

void System.Threading.Tasks.SingleProducerSingleConsumerQueue< T >.EnqueueSlow ( T item,
ref Segment segment )
inlineprivate

Definition at line 135 of file SingleProducerSingleConsumerQueue.cs.

136 {
137 if (segment._state._firstCopy != segment._state._first)
138 {
139 segment._state._firstCopy = segment._state._first;
140 Enqueue(item);
141 return;
142 }
143 int num = _tail._array.Length << 1;
144 if (num > 16777216)
145 {
146 num = 16777216;
147 }
148 Segment segment2 = new Segment(num);
149 segment2._array[0] = item;
150 segment2._state._last = 1;
151 segment2._state._lastCopy = 1;
152 try
153 {
154 }
155 finally
156 {
157 Volatile.Write(ref _tail._next, segment2);
158 _tail = segment2;
159 }
160 }

References System.Threading.Tasks.SingleProducerSingleConsumerQueue< T >._tail, System.Threading.Tasks.SingleProducerSingleConsumerQueue< T >.Enqueue(), System.item, and System.Threading.Volatile.Write().