Quais são as principais construções usadas para gerenciar e executar goroutines na linguagem de programação?
sobes.tech IA
Resposta da IA
Para gerir e executar goroutines em Go, utilizam-se as seguintes construções principais:
-
Início de uma goroutine: a palavra-chave
goantes de chamar uma função executa-a numa goroutine separada, por exemplo:go minhaFuncao()Isto permite executar a função de forma assíncrona.
-
Canais (channels): utilizados para sincronizar e trocar dados entre goroutines. Um canal é criado assim:
ch := make(chan int)Enviar e receber dados:
ch <- 42 // envio val := <-ch // receçãoOs canais garantem uma comunicação segura e bloqueiam a goroutine se os dados não estiverem prontos.
-
sync.WaitGroup: usado para esperar que um grupo de goroutines termine. Exemplo:
var wg sync.WaitGroup wg.Add(1) go func() { defer wg.Done() // trabalho da goroutine }() wg.Wait() // espera que todas as goroutines terminem -
select: permite esperar várias operações em canais ao mesmo tempo, escolhendo a pronta para executar. Exemplo:
select { case msg := <-ch1: fmt.Println("Recebido de ch1:", msg) case ch2 <- 42: fmt.Println("Enviado para ch2") default: fmt.Println("Nenhuma operação pronta") }
Estas construções permitem lançar, sincronizar e gerir a execução paralela em Go.