Sobes.tech
Back to questions
Middle+
4

Расскажи про планировщик горутин в Go — модель GMP, какие функции выполняет?

Companies where asked
Веро Трейс

Answer from AI

sobes.tech AI

В Go планировщик горутин реализован по модели GMP — это аббревиатура от G (goroutine), M (machine) и P (processor).

  • G — это сама горутина, легковесный поток выполнения.
  • M — это системный поток (OS thread), на котором выполняются горутины.
  • P — это логический процессор, который связывает горутины с потоками.

P ограничено числом, равным GOMAXPROCS, и управляет выполнением горутин, распределяя их на доступные M. Планировщик GMP отвечает за переключение между горутинами, балансировку нагрузки и эффективное использование системных потоков.

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

Пример: если у вас 4 P (GOMAXPROCS=4), то одновременно может выполняться до 4 горутин на 4 потоках ОС, а остальные горутины будут ждать своей очереди.