2017-07-04 139 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{}用於無限循環。