2017-07-04 3 views
0

The Go Memory Modelを読むと、私はこのコードスニペットになりました。いつでも3つのゴルーチンに制限同時実行 - -select {}は何をしますか?

var limit = make(chan int, 3) 

func main() { 
    for _, w := range work { 
     go func(w func()) { 
      limit <- 1 
      w() 
      <-limit 
     }(w) 
    } 
    select{} 
} 

私はこの機能を行うことになっているのか理解が、私は最終的select{}が何をするのか理解していません。私はこれがすべてのgoroutinesが走り終わるまでmainを生きておくための何らかの方法だと思っていますが、確かに言えません。

空で何が起こるかselect

+3

[このプロジェクトの主なゴルーチンはいつまでも眠りますか?](https://stackoverflow.com/questions/36419054/go-projects-main-goroutine-sleep-forever/36419222#36419222) – icza

+0

完璧、ありがとう! – LodeRunner

答えて

2

通常、無限ループにはselect{}が使用されます。

関連する問題