Junior — Middle
Como é implementado e gerenciado o trabalho de múltiplas goroutines na aplicação?
sobes.tech IA
Resposta da IA
No Go, as goroutines são threads leves gerenciados pelo runtime do Go, e não pelo sistema operativo. Quando uma aplicação cria muitas goroutines, o runtime do Go planeia a sua execução num número limitado de threads do sistema (M), usando o modelo M:N (M threads do sistema para N goroutines).
O escalonador do Go distribui as goroutines pelos threads, trocando de contexto de forma muito rápida e eficiente. Isto permite executar milhares e até milhões de goroutines com baixos custos de memória e tempo.
Exemplo de criação de uma goroutine:
func sayHello() {
fmt.Println("Olá da goroutine")
}
func main() {
go sayHello() // iniciar a goroutine
time.Sleep(time.Second) // dar tempo à goroutine para executar
}