Назад к вопросам
Senior
3
Как работает планировщик Go? Расскажи про модель GMP.
Компании, где спрашивали
Магнит Тех
Ответ от нейросети
sobes.tech AI
Планировщик Go основан на модели GMP, где:
- G (goroutine) — легковесная нить выполнения.
- M (machine) — системный поток ОС, на котором выполняются goroutine.
- P (processor) — логический процессор, который связывает G и M.
Каждый M может выполнять только одну G одновременно, но для выполнения M должен иметь доступ к P. Количество P ограничивает максимальное количество одновременно выполняемых gorутин на уровне планировщика.
Работа планировщика:
- Goroutine создаются и помещаются в очередь готовых к выполнению.
- P выбирает G из очереди и связывает её с M.
- M выполняет G.
- Если G блокируется (например, на ввод/вывод), M освобождается и может взять другую G.
- Планировщик балансирует нагрузку между M и G, переключая их по необходимости.
Такой подход позволяет эффективно использовать системные потоки и масштабировать выполнение большого числа горутин с минимальными накладными расходами.