Maison > développement back-end > Golang > Comment faire face à une impasse dans Golang

Comment faire face à une impasse dans Golang

(*-*)浩
Libérer: 2019-12-30 15:37:37
original
2865 Les gens l'ont consulté

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
}
Copier après la connexion

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
	}()
}
Copier après la connexion

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
		}
	}	
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal