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.