sich der folgende go playgroundDeadlock wenn goroutine in einem for-Schleife Laichen
package main
import "fmt"
func main() {
var chan_array [2]chan int
chan1 := make(chan int)
chan2 := make(chan int)
chan_array[0] = chan1
chan_array[1] = chan2
for i := 0; i < 2; i++ {
go func() {
select {
case x := <- chan_array[i]:
if (x == 0) {
return
}
fmt.Println(x)
}
}()
}
chan1<- 1
chan2<- 2
chan1<- 0
chan2<- 0
}
Der obige Code versucht 2 ausgeführt goroutines zu schaffen, mit der zu dem Kanal zuhört drucken oder zu schließen, um zu signalisieren.
Aber der obige Code läuft in totes Schloss.
Ich bin nicht ganz sicher, warum
jemand meinen Fehler kann darauf hinweisen?
Dank
Mögliche Duplikat [? Warum Golang Verschlüsse anders behandeln in goroutines] (http://stackoverflow.com/questions/25919213/why-does-golang-handle-closures -differently-in-goroutines) –