2017-07-04 3 views
0

Lesen The Go Memory Model, fiel ich auf dieses Code-Snippet.Was bewirkt die Auswahl von {}?

var limit = make(chan int, 3) 

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

Ich verstehe, was diese Funktion tun soll - Grenze Gleichzeitigkeit bis 3 goroutines jederzeit - aber ich verstehe nicht, was die endgültige select{} tut. Ich erwarte, dass dies ein Weg ist, main am Leben zu erhalten, bis alle Goroutinen fertig sind, aber ich kann es nicht mit Sicherheit sagen.

Was passiert in einem leeren select?

+3

Überprüfen Sie diese Frage: [Go wichtigsten Gorilla-Schlaf für immer?] (Https://stackoverflow.com/questions/36419054/go-projects-main-gorroutine-sleep-forever/36419222#36419222) – icza

+0

Perfekt, danke ! – LodeRunner

Antwort

2

Im Allgemeinen wird select{} für Endlosschleife verwendet.

Verwandte Themen