mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: convert p.statsSeq to internal atomic type
For #53821. Change-Id: I1cab3671a29c218b8a927aba9064e63b65900173 Reviewed-on: https://go-review.googlesource.com/c/go/+/425416 TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Michael Pratt <mpratt@google.com> Reviewed-by: Michael Pratt <mpratt@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> Run-TryBot: hopehook <hopehook@qq.com>
This commit is contained in:
parent
1211a62bdc
commit
2883af63c2
2 changed files with 4 additions and 4 deletions
|
|
@ -759,7 +759,7 @@ type consistentHeapStats struct {
|
|||
//go:nosplit
|
||||
func (m *consistentHeapStats) acquire() *heapStatsDelta {
|
||||
if pp := getg().m.p.ptr(); pp != nil {
|
||||
seq := atomic.Xadd(&pp.statsSeq, 1)
|
||||
seq := pp.statsSeq.Add(1)
|
||||
if seq%2 == 0 {
|
||||
// Should have been incremented to odd.
|
||||
print("runtime: seq=", seq, "\n")
|
||||
|
|
@ -788,7 +788,7 @@ func (m *consistentHeapStats) acquire() *heapStatsDelta {
|
|||
//go:nosplit
|
||||
func (m *consistentHeapStats) release() {
|
||||
if pp := getg().m.p.ptr(); pp != nil {
|
||||
seq := atomic.Xadd(&pp.statsSeq, 1)
|
||||
seq := pp.statsSeq.Add(1)
|
||||
if seq%2 != 0 {
|
||||
// Should have been incremented to even.
|
||||
print("runtime: seq=", seq, "\n")
|
||||
|
|
@ -862,7 +862,7 @@ func (m *consistentHeapStats) read(out *heapStatsDelta) {
|
|||
|
||||
for _, p := range allp {
|
||||
// Spin until there are no more writers.
|
||||
for atomic.Load(&p.statsSeq)%2 != 0 {
|
||||
for p.statsSeq.Load()%2 != 0 {
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -708,7 +708,7 @@ type p struct {
|
|||
|
||||
// statsSeq is a counter indicating whether this P is currently
|
||||
// writing any stats. Its value is even when not, odd when it is.
|
||||
statsSeq uint32
|
||||
statsSeq atomic.Uint32
|
||||
|
||||
// Lock for timers. We normally access the timers while running
|
||||
// on this P, but the scheduler can also do it from a different P.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue