Sobes.tech
Junior — Middle

Como distinguir uma goroutine de um thread normal de execução no sistema operativo?

sobes.tech IA

Resposta da IA

Uma goroutine é um thread de execução leve gerido pelo runtime do Go, não pelo sistema operativo. As principais diferenças:

  • Leveza: As goroutines ocupam muito menos memória (normalmente alguns quilobytes de pilha), enquanto que os threads do sistema requerem megabytes.
  • Planeamento: As goroutines são planeadas pelo runtime do Go (agendador M:N), não pelo sistema operativo. Isto permite executar milhares de goroutines em vários threads do sistema.
  • Criação: Criar uma goroutine é muito barato — basta escrever go função(), enquanto que criar um thread do sistema é mais dispendioso em recursos.

Exemplo de criação de uma goroutine:

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

func main() {
    go sayHello() // inicia uma goroutine
    time.Sleep(time.Second) // espera para que a goroutine tenha tempo de executar
}

Assim, as goroutines são uma abstração sobre os threads do sistema operativo, otimizadas para programação concorrente em Go.