(wg *sync.WaitGroup, workers, tasks int)
| 21 | } |
| 22 | |
| 23 | func pool(wg *sync.WaitGroup, workers, tasks int) { |
| 24 | ch := make(chan int) |
| 25 | |
| 26 | for i := 0; i < workers; i++ { |
| 27 | time.Sleep(1 * time.Millisecond) |
| 28 | go worker(ch, wg) |
| 29 | } |
| 30 | |
| 31 | for i := 0; i < tasks; i++ { |
| 32 | time.Sleep(10 * time.Millisecond) |
| 33 | ch <- i |
| 34 | } |
| 35 | |
| 36 | close(ch) |
| 37 | } |
| 38 | |
| 39 | func main() { |
| 40 | trace.Start(os.Stderr) |