"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que `input.Text()` é avaliado na rotina principal ao usar instruções `go`?

Por que `input.Text()` é avaliado na rotina principal ao usar instruções `go`?

Publicado em 2024-11-20
Navegar:297

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

Por que input.Text() é avaliado na gorotina principal

No capítulo 8 de The Go Programming Language, a seguinte afirmação é feito sobre o servidor de eco de simultaneidade:

Os argumentos para a função iniciada por go são avaliados quando a própria instrução go é executada; portanto, input.Text() é avaliado na goroutine principal.

Esta instrução significa que quando a instrução go é executada, a função input.Text() é imediatamente avaliada e seu resultado é passado para go echo () gorotina. Isso contrasta com uma chamada de função normal, onde os argumentos da função são avaliados quando a função é chamada e os resultados são passados ​​para a função chamada.

A razão para essa diferença é que as instruções go iniciam uma nova goroutine e goroutines são executados simultaneamente com a goroutine principal. Se os argumentos para a função iniciada por go fossem avaliados quando a função fosse chamada, a goroutine principal teria que esperar a conclusão da função antes de iniciar a nova goroutine. Isso anularia o propósito de usar goroutines, que é permitir a simultaneidade.

Ao avaliar os argumentos para a função iniciada por go quando a própria instrução go é executada, a goroutine principal não precisa esperar pela função para completar. Isso permite que as goroutines sejam iniciadas simultaneamente, que é o comportamento desejado.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3