【发布时间】:2017-07-04 15:42:05
【问题描述】:
阅读The Go Memory Model,我爱上了这个代码sn-p。
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会发生什么?
【问题讨论】:
标签: select go concurrency