2 writes to m_last
mscorlib (2)
system\threading\Tasks\ProducerConsumerQueues.cs (2)
169segment.m_state.m_last = tail2; 195newSegment.m_state.m_last = 1;
18 references to m_last
mscorlib (18)
system\threading\Tasks\ProducerConsumerQueues.cs (18)
162int last = segment.m_state.m_last; // local copy to avoid multiple volatile reads 238if (segment.m_state.m_last != segment.m_state.m_lastCopy) 240segment.m_state.m_lastCopy = segment.m_state.m_last; 244if (segment.m_next != null && segment.m_state.m_first == segment.m_state.m_last) 253if (first == 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 296if (segment.m_state.m_last != segment.m_state.m_lastCopy) 298segment.m_state.m_lastCopy = segment.m_state.m_last; 302if (segment.m_next != null && segment.m_state.m_first == segment.m_state.m_last) 311if (first == segment.m_state.m_last) 362if (segment.m_state.m_last != segment.m_state.m_lastCopy) 364segment.m_state.m_lastCopy = segment.m_state.m_last; 368if (segment.m_next != null && segment.m_state.m_first == segment.m_state.m_last) 377if (first == 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 413if (head.m_state.m_first != head.m_state.m_last) return false; 425pt != segment.m_state.m_last; 450last = segment.m_state.m_last;