Yep. Thanks!

cheers,
- J

On Tue, Oct 10, 2017 at 11:01 PM, Ian Lance Taylor <i...@golang.org> wrote:

> On Tue, Oct 10, 2017 at 7:56 AM, Jay Guo <guojiannan1...@gmail.com> wrote:
> >
> > 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.
>
> It's fine to call Wait before Add, the Wait simply won't wait.
> Presumably you are then going to call Wait again on the same
> sync.WaitGroup, possibly after some Add calls have occurred.
>
> Ian
>
>
> > 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.

Reply via email to