0
阅读The Go Memory Model,我倒在这个代码片段。select {}做了什么?
var limit = make(chan int, 3)
func main() {
for _, w := range work {
go func(w func()) {
limit <- 1
w()
<-limit
}(w)
}
select{}
}
我明白这是什么功能是应该做的 - 限制并发至3个够程在任何时间 - 但我不明白,最终select{}
做什么。我希望这是一种保持main
有效的方法,直到所有的goroutines都运行完毕,但我无法确定地说。
在空的select
中会发生什么?
看看这个问题:[Go project's main goroutine sleep forever?](https://stackoverflow.com/questions/36419054/go-projects-main-goroutine-sleep-forever/36419222#36419222) – icza
完美,谢谢! – LodeRunner