Junior — Middle
Como é que a gestão e distribuição de tarefas entre goroutines é feita na linguagem Go?
sobes.tech IA
Resposta da IA
Na linguagem Go, a gestão e distribuição de tarefas entre as goroutines é feita por um agendador (scheduler) integrado no runtime do Go. As goroutines são threads leves que são iniciadas com a palavra-chave go.
O agendador do Go distribui as goroutines pelos threads do sistema operacional (OS threads) e gerencia sua execução, garantindo concorrência e paralelismo. Ele usa um modelo M:N, onde M é o número de threads do sistema e N é o número de goroutines.
Exemplo de criação de uma goroutine:
func sayHello() {
fmt.Println("Olá de uma goroutine")
}
func main() {
go sayHello() // inicia a goroutine
time.Sleep(time.Second) // espera para que a goroutine possa executar
}
Assim, o desenvolvedor simplesmente inicia a goroutine, e o runtime do Go distribui as tarefas e faz a troca entre elas.