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

Как работает планировщик горутин в Go (GMP модель)? Что такое M в GMP модели?

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

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

sobes.tech AI

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

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

M — это именно поток ОС, который выполняет код горутины. Для запуска горутины необходим P, который выделяет M для выполнения G. Количество P ограничено (по умолчанию равно числу CPU), что позволяет контролировать параллелизм.

Схема работы:

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

Таким образом, M — это реальный поток ОС, который исполняет горутины, а P — абстракция, управляющая распределением горутин на потоки.