commit | 0976fa681c295de5355f7a4d968b56cb9da8a76b | [log] [tgz] |
---|---|---|
author | Changkun Ou <hi@changkun.de> | Sat May 07 17:30:52 2022 +0200 |
committer | Gopher Robot <gobot@golang.org> | Fri May 13 21:05:16 2022 +0000 |
tree | 9f42a816b87ed1891c276f76c87cfb6a673804e4 | |
parent | 036812b2e83c0ddf193dd5a34e034151da389d09 [diff] |
x/sync/errgroup: add TryGo and SetLimit to control concurrency This benchmark shows the difference between two implementations. Using explicit waiter with mutex (old, before PS3) or channel (new, since PS4). There is no significant difference at a measure: name old time/op new time/op delta Go-8 247ns ±10% 245ns ±10% ~ (p=0.571 n=5+10) name old alloc/op new alloc/op delta Go-8 48.0B ± 0% 40.0B ± 0% -16.67% (p=0.000 n=5+10) name old allocs/op new allocs/op delta Go-8 2.00 ± 0% 2.00 ± 0% ~ (all equal) Fixes golang/go#27837 Change-Id: I60247f1a2a1cdce2b180f10b409e37de8b82341e Reviewed-on: https://go-review.googlesource.com/c/sync/+/405174 Reviewed-by: Bryan Mills <bcmills@google.com> Reviewed-by: Heschi Kreinick <heschi@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Changkun Ou <mail@changkun.de> Auto-Submit: Bryan Mills <bcmills@google.com>
This repository provides Go concurrency primitives in addition to the ones provided by the language and “sync” and “sync/atomic” packages.
The easiest way to install is to run go get -u golang.org/x/sync
. You can also manually git clone the repository to $GOPATH/src/golang.org/x/sync
.
This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://golang.org/doc/contribute.html.
The main issue tracker for the sync repository is located at https://github.com/golang/go/issues. Prefix your issue with “x/sync:” in the subject line, so it is easy to find.