1,为什么要控制goroutine的数量? goroutine固然好,但是数量太多了,往往会带来很多麻烦,比如耗尽系统资源导致程序崩溃,或者CPU使用率过高导致系统忙不过来.比如: ; i < ; i++ { go work() } 2,用什么方法控制goroutine的数量? 要在每一次执行go之前判断goroutine的数量,如果数量超了,就要阻塞go的执行.第一时间想到的就是使用通道.每次执行的go之前向通道写入值,直到通道满的时候就阻塞了,如下: var ch chan int func