Назад к вопросам
Senior
3
Расскажите про планировщик Go (GMP модель)
Компании, где спрашивали
А7
Ответ от нейросети
sobes.tech AI
Планировщик Go основан на модели GMP — это абстракция, которая помогает эффективно управлять конкурентностью в языке.
- G (goroutine) — легковесная нить исполнения, которую создает разработчик.
- M (machine) — системный поток ОС, на котором выполняются goroutine.
- P (processor) — логический процессор, который связывает G и M, управляет их выполнением.
Работа планировщика:
- У каждого P есть очередь готовых к выполнению G.
- M привязывается к P и выполняет G из его очереди.
- Если G блокируется (например, на ввод/вывод), M освобождается и может обслуживать другой P.
- Планировщик балансирует нагрузку между P, распределяя G по очередям.
Это позволяет Go эффективно использовать системные потоки, минимизируя накладные расходы и обеспечивая масштабируемость.
Пример создания goroutine:
func main() {
go func() {
fmt.Println("Hello from goroutine")
}()
time.Sleep(time.Second) // Ждем завершения
}