Junior — Middle
Quais são as vantagens de usar goroutines em comparação com threads tradicionais na programação multithread?
sobes.tech IA
Resposta da IA
As goroutines em Go têm várias vantagens em comparação com os threads tradicionais:
- Leveza: As goroutines ocupam muito menos memória (normalmente alguns quilobytes), enquanto os threads do sistema operativo requerem megabytes.
- Criação e troca rápidas: Iniciar e alternar entre goroutines é muito mais rápido do que entre threads do sistema operativo.
- Gestão do agendador: O runtime do Go gere automaticamente o agendador de goroutines, distribuindo-as eficientemente pelos threads do sistema operativo.
- Simplicidade na sincronização: Os canais integrados permitem trocar dados entre goroutines de forma fácil e segura, sem primitivas de sincronização complexas.
Exemplo de uso de goroutines e canais:
func worker(ch chan int) {
for val := range ch {
fmt.Println("Recebido:", val)
}
}
func main() {
ch := make(chan int)
go worker(ch) // iniciar goroutine
ch <- 42
close(ch)
}
Assim, as goroutines proporcionam um meio eficiente e conveniente para programação concorrente, com menores custos de recursos e código mais simples em comparação com os threads tradicionais.