が呼び出さsync.WaitGroup
れた後に再利用できますか?Wait()
func worker(who string, in <-chan int, wg *sync.WaitGroup) {
for i := range in {
fmt.Println(who, i)
wg.Done()
}
}
func main() {
var wg sync.WaitGroup
AIn := make(chan int, 1)
BIn := make(chan int, 1)
go worker("a:", AIn, &wg)
go worker("b:", BIn, &wg)
for i := 0; i < 4; i++ {
wg.Add(2)
AIn <- i
BIn <- i
wg.Wait()
fmt.Println("main:", i)
}
}
このplay.golang.org/p/QLsvA-b4Aeは期待どおりに動作しますが、安全であることが保証されていますか? ドキュメンテーションにはそうは書かれていませんが、たぶん私は妄想的です。