mirror of https://github.com/golang/go.git
runtime: fix trace.Stop run indefinitely when built with faketime
Updated doc for the logic Change-Id: I8b4df301b925ddea648bbb49bc35bc718046bd59
This commit is contained in:
parent
9ece9a7ac9
commit
d300ca3f31
|
|
@ -453,12 +453,17 @@ func StopTrace() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wait for startNanotime != endNanotime. On Windows the default interval between
|
||||||
|
// system clock ticks is typically between 1 and 15 milliseconds, which may not
|
||||||
|
// have passed since the trace started. Without nanotime moving forward, trace
|
||||||
|
// tooling has no way of identifying how much real time each cputicks time deltas
|
||||||
|
// represent.
|
||||||
for {
|
for {
|
||||||
trace.endTime = traceClockNow()
|
trace.endTime = traceClockNow()
|
||||||
trace.endTicks = cputicks()
|
trace.endTicks = cputicks()
|
||||||
trace.endNanotime = nanotime()
|
trace.endNanotime = nanotime()
|
||||||
// Windows time can tick only every 15ms, wait for at least one tick.
|
|
||||||
if trace.endNanotime != trace.startNanotime {
|
if trace.endNanotime != trace.startNanotime || faketime != 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
osyield()
|
osyield()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue