Sobes.tech
Junior — Middle

Poderia explicar o conceito de threads leves e suas diferenças em relação às threads de execução normais?

sobes.tech IA

Resposta da IA

Os threads leves (goroutines em Go) são uma abstração para a execução paralela de código, que é mais leve e eficiente em recursos do que os threads do sistema convencional.

Diferenças:

  • Recursos: as goroutines ocupam muito menos memória (normalmente alguns quilobytes), enquanto que um thread do sistema requer muito mais (normalmente megabytes).
  • Planeamento: as goroutines são planeadas pelo agendador do Go dentro do processo, não pelo sistema operativo, o que permite uma troca rápida entre elas.
  • Criação: lançar uma goroutine é muito rápido e barato, podendo criar milhares ou até milhões simultaneamente.

Exemplo de criação de uma goroutine:

func sayHello() {
    fmt.Println("Olá da goroutine")
}

func main() {
    go sayHello() // inicia a função numa goroutine separada
    time.Sleep(time.Second) // espera para que a goroutine tenha tempo de executar
}

Assim, os threads leves permitem usar o paralelismo de forma eficiente sem grandes custos adicionais.