experimental/jobs.go (18 lines of code) (raw):

package experimental type jobsData chan func() func (ch jobsData) group() *jobGroup { return &jobGroup{ch: ch} } func (ch jobsData) run(max int) { for max > 0 { go func() { for job := range ch { job() } }() max-- } } func (ch jobsData) close() { close(ch) }