Go Channel 高级实践

sxssxs ·
// 最大并发数为 2 ```go limits := make(chan struct{}, 2) for i := 0; i < 10; i++ { go func() { // 缓冲区满了就会阻塞在这 limits <- struct{}{} do() <-limits }() } ``` 这种不能达到你的想法吧,for所在gorutine会一直运行,里面的go func()运行的机会都没有,对吧, ```go limits := make(chan struct{}, 2) for i := 0; i < 10; i++ { limits <- struct{}{} go func() { do() <-limits }() } ```
#1