Sobes.tech
Back to questions
Senior
10

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

Companies where asked
Prediva

Answer from AI

sobes.tech AI

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

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

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

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

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