A little imagination would help us all greatly. Select part would obviously
be in a for loop. Like this:

func worker() {
  // do work,  prepare whatever

for some_condition{
  // do stuff

  Select {
  ch <- true:
    go worker() // try to handover some jobs
  default:
    // max goroutine limit
    // do them yourself
  }

  // do stuff, increment counter
}

  // do remaining jobs

  // make way
  <- ch
  return
}

22 Şub 2019 Cum 15:30 tarihinde Robert Engels <reng...@ix.netcom.com> şunu
yazdı:

> I’m pretty sure this code is incorrect and there will only be a single
> routine doing any “real work”, although the comment //do remaining jobs is
> unclear because there is no code.
>
> > On Feb 22, 2019, at 12:42 AM, Serhat Şevki Dinçer <jfcga...@gmail.com>
> wrote:
> >
> > Another use case is wait groups with Max number of goroutines allowed:
> >
> > ch:= make(chan bool, 10)
> >
> > func waiter() {
> >  ch <-true
> >  go worker()
> >
> >  // when empty, all jobs are finished
> >  waitempty(ch)
> > }
> >
> > func worker() {
> >  // do work
> >
> >  Select {
> >  ch <- true:
> >    go worker() // try to handover some jobs
> >  default:
> >    // max goroutine limit
> >    // do them yourself
> >  }
> >
> >  // do remaining jobs
> >
> >  // make way
> >  <- ch
> >  return
> > }
> >
> > --
> > 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.
>
>

-- 
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