Sobes.tech
Junior — Middle

Qual é a diferença entre uma goroutine e uma thread do sistema no contexto da execução de tarefas?

sobes.tech IA

Resposta da IA

Uma goroutine é uma unidade de execução leve gerenciada pelo ambiente de execução do Go (runtime), que usa muito pouca memória e pode ser executada em grande quantidade simultaneamente. Um thread do sistema é uma unidade de agendamento mais pesada do sistema operativo.

Principais diferenças:

  • As goroutines são muito mais leves em recursos do que os threads do sistema.
  • O agendamento das goroutines ocorre dentro do runtime do Go, não pelo sistema operativo.
  • Milhares de goroutines podem trabalhar simultaneamente, enquanto normalmente há menos threads do sistema devido aos custos de criação e troca.

Exemplo de criação de uma goroutine:

func tarefa() {
    fmt.Println("Execução da tarefa")
}

func main() {
    go tarefa() // iniciar goroutine
    time.Sleep(time.Second) // esperar para que a goroutine tenha tempo de executar
}

Assim, as goroutines permitem executar eficientemente muitas tarefas em paralelo com menores custos adicionais.