Junior — Middle
Como é implementado o processamento paralelo e sequencial de tarefas na linguagem Go?
sobes.tech IA
Resposta da IA
Em Go, o processamento paralelo de tarefas é realizado usando goroutines, que são threads leves iniciados com a palavra-chave go. Pode-se lançar uma goroutine para executar uma função de forma assíncrona, e ela será executada em paralelo com outras goroutines.
O processamento sequencial é simplesmente a chamada de funções sem usar go, onde as tarefas são realizadas uma após a outra.
Exemplo de processamento paralelo:
package main
import (
"fmt"
"time"
)
func tarefa(id int) {
fmt.Printf("Tarefa %d iniciada\n", id)
time.Sleep(time.Second)
fmt.Printf("Tarefa %d finalizada\n", id)
}
func main() {
for i := 1; i <= 3; i++ {
go tarefa(i) // inicia uma goroutine
}
time.Sleep(2 * time.Second) // espera a conclusão das goroutines
}
Neste exemplo, três tarefas são iniciadas em paralelo. Se remover go, as tarefas serão executadas sequencialmente.
Para sincronizar e gerenciar goroutines, frequentemente usam-se canais (channels) e sync.WaitGroup.