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.