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