mirror of
https://github.com/golang/go
synced 2024-11-18 18:04:46 -07:00
runtime: run mutexevent profiling without holding semaRoot lock
Suggested by Dmitry in CL 36792 review. Clearly safe since there are many different semaRoots that could all have profiled sudogs calling mutexevent. Change-Id: I45eed47a5be3e513b2dad63b60afcd94800e16d1 Reviewed-on: https://go-review.googlesource.com/37104 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
This commit is contained in:
parent
83f95b85de
commit
58d762176a
@ -174,13 +174,14 @@ func semrelease(addr *uint32) {
|
|||||||
s, t0 := root.dequeue(addr)
|
s, t0 := root.dequeue(addr)
|
||||||
if s != nil {
|
if s != nil {
|
||||||
atomic.Xadd(&root.nwait, -1)
|
atomic.Xadd(&root.nwait, -1)
|
||||||
if s.acquiretime != 0 {
|
|
||||||
mutexevent(t0-s.acquiretime, 3)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
unlock(&root.lock)
|
unlock(&root.lock)
|
||||||
if s != nil { // May be slow, so unlock first
|
if s != nil { // May be slow, so unlock first
|
||||||
|
acquiretime := s.acquiretime
|
||||||
readyWithTime(s, 5)
|
readyWithTime(s, 5)
|
||||||
|
if acquiretime != 0 {
|
||||||
|
mutexevent(t0-acquiretime, 3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user