diff options
author | Cuong Manh Le <cuong.manhle.vn@gmail.com> | 2022-09-29 11:59:30 +0700 |
---|---|---|
committer | Gopher Robot <gobot@golang.org> | 2022-09-29 20:41:14 +0000 |
commit | 8fcdb60fdcc0539c5e357b2308249e4e752147f1 (patch) | |
tree | d386e51a672a47e5c2fca164501a42ef9b49e811 | |
parent | 7f9b1623fab7a8a3d219f2a4db1b2fe98fadafea (diff) | |
download | golang-x-sync-8fcdb60fdcc0539c5e357b2308249e4e752147f1.tar.gz |
singleflight: avoid race between multiple Do calls
This is port of CL 436437, but without the test. ForgotUnshared has not
been ported here yet.
Change-Id: Id54d0c41d1a7948bf008e458c44b21670ada81e4
Reviewed-on: https://go-review.googlesource.com/c/sync/+/436495
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
-rw-r--r-- | singleflight/singleflight.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/singleflight/singleflight.go b/singleflight/singleflight.go index 7c7fc50..8473fb7 100644 --- a/singleflight/singleflight.go +++ b/singleflight/singleflight.go @@ -144,9 +144,9 @@ func (g *Group) doCall(c *call, key string, fn func() (interface{}, error)) { c.err = errGoexit } - c.wg.Done() g.mu.Lock() defer g.mu.Unlock() + c.wg.Done() if g.m[key] == c { delete(g.m, key) } |