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.

Reply via email to