4 writes to m_first
mscorlib (4)
system\threading\Tasks\ProducerConsumerQueues.cs (4)
221
segment.m_state.
m_first
= (first + 1) & (array.Length - 1);
261
segment.m_state.
m_first
= (first + 1) & (segment.m_array.Length - 1);
338
segment.m_state.
m_first
= (first + 1) & (array.Length - 1);
387
segment.m_state.
m_first
= (first + 1) & (segment.m_array.Length - 1);
16 references to m_first
mscorlib (16)
system\threading\Tasks\ProducerConsumerQueues.cs (16)
182
if (segment.m_state.m_firstCopy != segment.m_state.
m_first
)
184
segment.m_state.m_firstCopy = segment.m_state.
m_first
;
214
int first = segment.m_state.
m_first
; // local copy to avoid multiple volatile reads
244
if (segment.m_next != null && segment.m_state.
m_first
== segment.m_state.m_last)
251
var first = segment.m_state.
m_first
; // local copy to avoid extraneous volatile reads
274
int first = segment.m_state.
m_first
; // local copy to avoid multiple volatile reads
302
if (segment.m_next != null && segment.m_state.
m_first
== segment.m_state.m_last)
309
var first = segment.m_state.
m_first
; // local copy to avoid extraneous volatile reads
329
int first = segment.m_state.
m_first
; // local copy to avoid multiple volatile reads
368
if (segment.m_next != null && segment.m_state.
m_first
== segment.m_state.m_last)
375
var first = segment.m_state.
m_first
; // local copy to avoid extraneous volatile reads
412
if (head.m_state.
m_first
!= head.m_state.m_lastCopy) return false; // m_first is volatile, so the read of m_lastCopy cannot get reordered
413
if (head.m_state.
m_first
!= head.m_state.m_last) return false;
424
for (int pt = segment.m_state.
m_first
;
449
first = segment.m_state.
m_first
;
451
if (first == segment.m_state.
m_first
) break;