Maison >développement back-end >Golang >Comment faire face à une impasse dans Golang
Deadlock
Deadlock signifie que lors de l'exécution de deux ou plusieurs coroutines, en raison d'une compétition pour les ressources ou l'une de l'autre Un phénomène de blocage causés par la communication. Sans force extérieure, ils ne pourront pas avancer. (Apprentissage recommandé : go)
Interblocages courants
Scénario 1 : Un canal est lu et écrit dans un processus go
func main() { c:=make(chan int) c<-88 <-c }
Scénario 2 : Le canal est utilisé avant le démarrage du processus go
func main() { c:=make(chan int) c<-88 go func() { <-c }() }
Scénario 3 : Le canal 2 est appelé dans le canal 1 et le canal 1 est appelé dans le canal 2
func main() { c1,c2:=make(chan int),make(chan int) go func() { for { select{ case <-c1: c2<-10 } } }() for { select{ case <-c2: c1<-10 } } }
Des blocages se produisent dans de nombreuses situations, mais ils sont tous causés par un conflit pour les ressources et la communication de données.
La façon de résoudre une impasse est de verrouiller.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!