Sobes.tech
Back to questions
Senior
4

Как работает планировщик Go? Расскажи про модель GMP.

Companies where asked
Магнит Тех

Answer from AI

sobes.tech AI

Планировщик Go основан на модели GMP, где:

  • G (goroutine) — легковесная нить выполнения.
  • M (machine) — системный поток ОС, на котором выполняются goroutine.
  • P (processor) — логический процессор, который связывает G и M.

Каждый M может выполнять только одну G одновременно, но для выполнения M должен иметь доступ к P. Количество P ограничивает максимальное количество одновременно выполняемых gorутин на уровне планировщика.

Работа планировщика:

  1. Goroutine создаются и помещаются в очередь готовых к выполнению.
  2. P выбирает G из очереди и связывает её с M.
  3. M выполняет G.
  4. Если G блокируется (например, на ввод/вывод), M освобождается и может взять другую G.
  5. Планировщик балансирует нагрузку между M и G, переключая их по необходимости.

Такой подход позволяет эффективно использовать системные потоки и масштабировать выполнение большого числа горутин с минимальными накладными расходами.