6 writes to m_lastCopy
mscorlib (6)
system\threading\Tasks\ProducerConsumerQueues.cs (6)
196
newSegment.m_state.
m_lastCopy
= 1;
240
segment.m_state.
m_lastCopy
= segment.m_state.m_last;
262
segment.m_state.
m_lastCopy
= segment.m_state.m_last; // Refresh m_lastCopy to ensure that m_first has not passed m_lastCopy
298
segment.m_state.
m_lastCopy
= segment.m_state.m_last;
364
segment.m_state.
m_lastCopy
= segment.m_state.m_last;
388
segment.m_state.
m_lastCopy
= segment.m_state.m_last; // Refresh m_lastCopy to ensure that m_first has not passed m_lastCopy
7 references to m_lastCopy
mscorlib (7)
system\threading\Tasks\ProducerConsumerQueues.cs (7)
217
if (first != segment.m_state.
m_lastCopy
)
238
if (segment.m_state.m_last != segment.m_state.
m_lastCopy
)
277
if (first != segment.m_state.
m_lastCopy
)
296
if (segment.m_state.m_last != segment.m_state.
m_lastCopy
)
332
if (first != segment.m_state.
m_lastCopy
)
362
if (segment.m_state.m_last != segment.m_state.
m_lastCopy
)
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