select {}会做什么?

时间:2017-07-04 15:42:06

标签: select go concurrency

阅读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会发生什么?

1 个答案:

答案 0 :(得分:2)

通常,select{}用于无限循环。