Sobes.tech
Назад к вопросам
Senior
4

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

Компании, где спрашивали
Prediva

Ответ от нейросети

sobes.tech AI

Планировщик Go основан на модели GMP — это абстракция, которая помогает эффективно управлять конкурентными задачами (горутинами).

  • G (Goroutine) — это легковесная нить выполнения, которую создаёт программист.
  • M (Machine) — это системный поток ОС, на котором выполняются горутины.
  • P (Processor) — это логический процессор, который связывает M и G, предоставляя контекст для выполнения горутин.

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

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

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