werfen: alle goroutines schlafen - Deadlock
Gegeben das folgende einfache Programm Gehen
package main
import (
"fmt"
)
func total(ch chan int) {
res := 0
for iter := range ch {
res += iter
}
ch <- res
}
func main() {
ch := make(chan int)
go total(ch)
ch <- 1
ch <- 2
ch <- 3
fmt.Println("Total is ", <-ch)
}
Frage ich mich, ob jemand kann mich aufklären, warum bekomme ich
throw: all goroutines are asleep - deadlock!
danke
InformationsquelleAutor der Frage adk | 2012-09-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie niemals in der Nähe der
ch
Kanal, den Bereich Schleife wird nie fertig stellen.Können Sie nicht zurück zu senden das Ergebnis auf dem gleichen Kanal. Eine Lösung ist die Verwendung eine andere.
Ihrem Programm angepasst werden könnte, wie diese :
InformationsquelleAutor der Antwort Denys Séguret
Dies ist auch richtig.
InformationsquelleAutor der Antwort bvaccc