Execução de goroutine no Windows: solução de problemas de falha silenciosa
Um teste simples envolvendo goroutines mostra um comportamento inesperado no Windows, pois a saída esperada não é produzida . O problema surge porque a função principal não espera a conclusão da goroutine antes de terminar.
Go Awaits
Quando uma goroutine é iniciada usando a palavra-chave "go", ele é executado simultaneamente com a função principal. Porém, a execução da função principal não pausa e aguarda a conclusão das goroutines invocadas. Consequentemente, a função principal é encerrada, potencialmente deixando a goroutine não programada.
Medidas Corretivas
Para garantir que a goroutine tenha a oportunidade de executar e imprimir sua saída, a principal a função deve ser modificada para aguardar algum tempo. Isto pode ser conseguido usando o pacote "time" e a função "Sleep". Ao introduzir um tempo de suspensão, a função principal dá à goroutine a chance de executar e produzir saída antes de terminar.
Código Modificado
O código modificado a seguir resolve o problema adicionando um tempo de suspensão de 10 segundos ao final da função principal:
package main
import (
"fmt"
"time"
)
func test() {
fmt.Println("test")
}
func main() {
go test()
time.Sleep(10 * time.Second)
}
Output
O código modificado agora produz a saída esperada:
test
Esta modificação permite que a função principal espere após iniciar a goroutine, dando-lhe tempo suficiente para executar e imprimir a mensagem "teste" antes que o programa termine.
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