func main() {
ch := make(chan struct{}, 10)
var wg sync.WaitGroup
for i := 0; i < 1000; i++ {
ch <- struct{}{}
wg.Add(1)
go func(i int) {
defer func() {
<-ch
wg.Done()
}()
fmt.Println(i)
}(i)
}
wg.Wait()
}
https://play.golang.org/p/Cry94fFpeFH
Recommended Posts