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.

Reply via email to