Thanks for you reply! In my use case, both cases you presented are valid and I don't really need to disambiguate them. So I guess calling `Wait` before `Add` here should be fine? I couldn't tell if there would be any unexpected crash from reading `WaitGroup` source code.
- J On Tue, Oct 10, 2017 at 9:42 PM, Ian Lance Taylor <i...@golang.org> wrote: > On Tue, Oct 10, 2017 at 5:34 AM, Jay Guo <guojiannan1...@gmail.com> wrote: > > > > It is suggested in https://golang.org/pkg/sync/#WaitGroup that: > > > > // Note that calls with a positive delta that occur when the counter is > zero > > // must happen before a Wait. > > > > I wonder what's the reason in terms of `sync` implementation. > > > > Essentially I'm trying to implement following logic: > > > > for { > > waitForAllTaskToComplete() > > ... > > } > > > > where we may have no task in flight initially. > > That rule clarifies that if all the Done calls happen before the > program gets around to calling Wait, the Wait will not block. > Basically, a Wait with a count of zero might mean that nobody has > called Add, or it might mean that all calls to Add have already called > Done. Clearly in the latter case we should not block, and the effect > is that we can not block in the former case as well. > > Ian > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.