Junior — Middle
O que torna as goroutines mais eficientes em comparação com os threads de implementação tradicional?
sobes.tech IA
Resposta da IA
As goroutines em Go são mais eficientes em comparação com os threads tradicionais devido a várias características-chave:
- Leveza: As goroutines ocupam muito pouca memória (geralmente cerca de 2 KB de pilha), enquanto que os threads do sistema requerem muito mais memória.
- Agendador a nível de linguagem: Go possui seu próprio agendador de goroutines, que distribui eficientemente sua execução pelos threads do sistema, permitindo executar milhares de goroutines simultaneamente sem custos significativos.
- Criação e troca de contexto rápidas: A criação e troca entre goroutines é muito mais rápida do que entre threads do sistema operacional, o que reduz os custos de multitarefa.
Exemplo de criação de uma goroutine:
func sayHello() {
fmt.Println("Olá de uma goroutine")
}
func main() {
go sayHello() // iniciar a goroutine
time.Sleep(time.Second) // esperar para que a goroutine seja executada
}