diff options
author | Dmitriy Vyukov <dvyukov@google.com> | 2014-04-08 10:18:20 +0400 |
---|---|---|
committer | Dmitriy Vyukov <dvyukov@google.com> | 2014-04-08 10:18:20 +0400 |
commit | 32942e306d8ac21e2a592c367a9fa96d787b2943 (patch) | |
tree | 5a8c4edf82606dd93fa87882ed706d2df12b99e1 /AUTHORS | |
parent | 00a1b0cea791fbcb221ff4ab21a30b2911a62c05 (diff) | |
download | go-32942e306d8ac21e2a592c367a9fa96d787b2943.tar.gz |
runtime/race: more precise handling of channel synchronization
It turns out there is a relatively common pattern that relies on
inverted channel semaphore:
gate := make(chan bool, N)
for ... {
// limit concurrency
gate <- true
go func() {
foo(...)
<-gate
}()
}
// join all goroutines
for i := 0; i < N; i++ {
gate <- true
}
So handle synchronization on inverted semaphores with cap>1.
Fixes issue 7718.
LGTM=rsc
R=rsc
CC=golang-codereviews
https://codereview.appspot.com/84880046
Diffstat (limited to 'AUTHORS')
0 files changed, 0 insertions, 0 deletions