Sobes.tech
Junior — Middle

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.