Deadlock
Deadlock bedeutet, dass während der Ausführung von zwei oder mehr Coroutinen ein Blockierungsphänomen aufgrund des Wettbewerbs um Ressourcen oder aufgrund eines anderen auftritt Ohne äußere Kraft können sie nicht vorankommen. (Empfohlenes Lernen: go)
Häufige Deadlocks
Szenario 1: Ein Kanal wird in einem Go-Prozess gelesen und geschrieben
func main() { c:=make(chan int) c<-88 <-c }
Szenario 2: Der Kanal wird verwendet, bevor der Go-Prozess gestartet wird
func main() { c:=make(chan int) c<-88 go func() { <-c }() }
Szenario 3: Kanal 2 wird in Kanal 1 und Kanal aufgerufen 1 wird in Kanal 2 aufgerufen
func main() { c1,c2:=make(chan int),make(chan int) go func() { for { select{ case <-c1: c2<-10 } } }() for { select{ case <-c2: c1<-10 } } }
Deadlocks treten in vielen Situationen auf, aber sie werden alle durch Konflikte um Ressourcen und Datenkommunikation verursacht.
Der Weg, Deadlocks zu lösen, ist das Sperren.
Das obige ist der detaillierte Inhalt vonWie man mit Deadlocks in Golang umgeht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!