Back to questions
Senior
8
Как работает планировщик горутин в Go (GMP модель)? Что такое M в GMP модели?
Companies where asked
Гос крипта
Answer from AI
sobes.tech AI
Планировщик горутин в Go основан на модели GMP, где:
- G (Goroutine) — легковесная нить исполнения.
- M (Machine) — системный поток ОС, который выполняет горутины.
- P (Processor) — логический процессор, который связывает G и M, управляет выполнением.
M — это именно поток ОС, который выполняет код горутины. Для запуска горутины необходим P, который выделяет M для выполнения G. Количество P ограничено (по умолчанию равно числу CPU), что позволяет контролировать параллелизм.
Схема работы:
- Горутине (G) назначается P.
- P связывается с M (потоком ОС), который выполняет G.
- Когда горутина блокируется (например, на ввод/вывод), M освобождается и может выполнять другую горутину.
- Планировщик переключает горутины между M через P, обеспечивая конкурентность и параллелизм.
Таким образом, M — это реальный поток ОС, который исполняет горутины, а P — абстракция, управляющая распределением горутин на потоки.