2017-07-04 103 views
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中会发生什么?

+3

看看这个问题:[Go project's main goroutine sleep forever?](https://stackoverflow.com/questions/36419054/go-projects-main-goroutine-sleep-forever/36419222#36419222) – icza

+0

完美,谢谢! – LodeRunner

回答

2

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