Sobes.tech
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
}