I found that all State objects use the same PerfCountersMeasurement pointer. In State::PauseTiming() and State::ResumeTiming(), PerfCountersMeasurement::Start() and PerfCountersMeasurement::Stop() is called. Each thread has an exclusive State object, but all these object share the same PerfCountersMeasurement pointer. So is this correct? What happened when PerfCountersMeasurement::Start() and PerfCountersMeasurement::Stop() called multiple times in multiple threads?