From f50e47308d60d2a043aa3f806069d49e1b7ad0c1 Mon Sep 17 00:00:00 2001 From: Ludi Rehak Date: Mon, 8 Aug 2022 18:55:56 -0700 Subject: [PATCH] cmd/go/internal/par: change cacheEntry.done type to atomic.Bool Change-Id: I95c941f83f74d57dfdd2d6803c9059691fb649b8 Reviewed-on: https://go-review.googlesource.com/c/go/+/422176 TryBot-Result: Gopher Robot Reviewed-by: hopehook Reviewed-by: Bryan Mills Auto-Submit: Bryan Mills Reviewed-by: David Chase Run-TryBot: Bryan Mills --- src/cmd/go/internal/par/work.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/cmd/go/internal/par/work.go b/src/cmd/go/internal/par/work.go index 496c41b150..7626251087 100644 --- a/src/cmd/go/internal/par/work.go +++ b/src/cmd/go/internal/par/work.go @@ -108,7 +108,7 @@ type Cache struct { } type cacheEntry struct { - done uint32 + done atomic.Bool mu sync.Mutex result any } @@ -122,11 +122,11 @@ func (c *Cache) Do(key any, f func() any) any { entryIface, _ = c.m.LoadOrStore(key, new(cacheEntry)) } e := entryIface.(*cacheEntry) - if atomic.LoadUint32(&e.done) == 0 { + if !e.done.Load() { e.mu.Lock() - if atomic.LoadUint32(&e.done) == 0 { + if !e.done.Load() { e.result = f() - atomic.StoreUint32(&e.done, 1) + e.done.Store(true) } e.mu.Unlock() } @@ -142,7 +142,7 @@ func (c *Cache) Get(key any) any { return nil } e := entryIface.(*cacheEntry) - if atomic.LoadUint32(&e.done) == 0 { + if !e.done.Load() { return nil } return e.result -- 2.50.0