-4
ich am Beispiel von https://blog.golang.org/pipelines suchen:Wenn die nächste Goroutine ausgeführt wird?
func main() {
in := gen(2, 3)
// Distribute the sq work across two goroutines that both read from in.
c1 := sq(in)
// When does this line below execute and what is in `in`?
c2 := sq(in)
// Consume the merged output from c1 and c2.
for n := range merge(c1, c2) {
fmt.Println(n) // 4 then 9, or 9 then 4
}
}
Wann c2 := sq(in)
laufen? Was ich verstehe, wird nicht ausgeführt, wenn die vorherige Zeile endet, sondern sofort, da dies eine Goroutine ist.
Wird c2
die nächste eingehende Nachricht empfangen, die nach der Nachricht gesendet wird, die von c1
empfangen wird?
Nein, es wird ausgeführt, wenn die vorherige Zeile beendet ist. Es gibt kein 'go', also ist es keine Goroutine. (Die gen-Funktion kann * eine Goroutine starten, aber das ist völlig separat und läuft im Hintergrund.) – psmears