阅读The Go Memory Model,我看到了这段代码。
var limit = make(chan int, 3)
func main() {
for _, w := range work {
go func(w func()) {
limit <- 1
w()
<-limit
}(w)
}
select{}
}
我理解这个函数应该做什么 - 在任何时候将并发限制为3个goroutine - 但我不明白最终select{}
的作用。我希望这可以让main
保持活着直到所有goroutines都运行完毕,但我无法肯定地说。
空select
会发生什么?
答案 0 :(得分:2)
通常,select{}
用于无限循环。