"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi `input.Text()` est-il évalué dans la routine principale lors de l'utilisation des instructions `go` ?

Pourquoi `input.Text()` est-il évalué dans la routine principale lors de l'utilisation des instructions `go` ?

Publié le 2024-11-20
Parcourir:849

Why is `input.Text()` Evaluated in the Main Goroutine When Using `go` Statements?

Pourquoi input.Text() est évalué dans le Goroutine principal

Dans le chapitre 8 de Le langage de programmation Go, l'instruction suivante est fait à propos du serveur d'écho de concurrence :

Les arguments de la fonction démarrée par go sont évalués lorsque l'instruction go elle-même est exécutée ; ainsi input.Text() est évalué dans la goroutine principale.

Cette instruction signifie que lorsque l'instruction go est exécutée, la fonction input.Text() est immédiatement évaluée et son résultat est transmis à go echo () goroutine. Cela contraste avec un appel de fonction normal, où les arguments de la fonction sont évalués lorsque la fonction est appelée et les résultats sont transmis à la fonction appelée.

La raison de cette différence est que les instructions go démarrent un nouveau goroutine, et les goroutines sont exécutées en même temps que la goroutine principale. Si les arguments de la fonction démarrée par go étaient évalués lors de l'appel de la fonction, la goroutine principale devrait attendre que la fonction soit terminée avant de démarrer la nouvelle goroutine. Cela irait à l'encontre de l'objectif de l'utilisation des goroutines, qui est d'activer la concurrence.

En évaluant les arguments de la fonction démarrée par go lorsque l'instruction go elle-même est exécutée, la goroutine principale n'a pas à attendre la fonction. à compléter. Cela permet aux goroutines d'être démarrées simultanément, ce qui est le comportement souhaité.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3