Junior — Middle
Em que casos as tarefas em goroutines são colocadas na fila comum do agendador de execução?
sobes.tech IA
Resposta da IA
Em Go, as tarefas (goroutines) são colocadas na fila de planeamento de execução (fila de execução) nos seguintes casos:
- Quando uma goroutine é criada com
goe está pronta para execução, ela é colocada na fila do planeador. - Se a goroutine fica bloqueada (por exemplo, em operações de entrada/saída, canais ou sincronização) e depois é desbloqueada, ela retorna à fila.
- Ao terminar a goroutine atual, o planeador escolhe a próxima da fila.
O planeador de Go usa um modelo M:N, onde M são os threads do sistema e N são as goroutines. Existem muitas goroutines, que são distribuídas pelos threads através de filas. A fila do planeador é uma estrutura onde as goroutines prontas para execução são armazenadas.
Exemplo:
func main() {
go func() {
fmt.Println("Goroutine iniciada")
}()
time.Sleep(time.Second) // Esperamos para que a goroutine tenha tempo de executar
}
Aqui, a goroutine, após ser criada, é colocada na fila do planeador para execução.