Qual é a diferença entre goroutines e threads tradicionais?
sobes.tech IA
Resposta da IA
As goroutines em Go são threads leves geridos pelo runtime do Go, ao contrário dos threads tradicionais do sistema operativo.
Principais diferenças:
-
Leveza: As goroutines ocupam muito menos memória (normalmente alguns quilobytes), enquanto que os threads do sistema requerem muito mais recursos.
-
Escalabilidade: É possível lançar milhares e até milhões de goroutines simultaneamente, o que é difícil com threads tradicionais.
-
Planeamento: O agendador de goroutines está integrado no runtime do Go e distribui eficientemente as goroutines pelos threads do sistema.
-
Sincronização: Para comunicação entre goroutines, frequentemente usam-se canais (
channels), o que simplifica a troca de dados e a sincronização.
Exemplo de criação de uma goroutine:
func sayHello() {
fmt.Println("Olá de uma goroutine")
}
func main() {
go sayHello() // inicia a goroutine
time.Sleep(time.Second) // espera para que a goroutine tenha tempo de executar
}
Assim, as goroutines são uma forma eficiente de executar código em paralelo com menores custos adicionais do que os threads tradicionais.