On Thu, Feb 21, 2019 at 11:42 PM 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 > }
This code will divide the job to n+1 pieces: n the channel size, and when that's full, one more goroutine that's running the worker(). Same can be done with a condition variable and a waitgroup. > > -- > 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.