Назад к вопросам
Senior
3
Расскажи про работу планировщика Go (GMP-модель).
Компании, где спрашивали
.wrk
Ответ от нейросети
sobes.tech AI
Планировщик Go основан на модели GMP — Goroutine, Machine, Processor.
- G (Goroutine) — легковесная нить выполнения, которую создает программа.
- M (Machine) — системный поток ОС, который выполняет goroutine.
- P (Processor) — логический процессор, который связывает G и M, управляет выполнением gorутин.
Работа планировщика:
- У каждого P есть очередь готовых к выполнению goroutine (G).
- M привязывается к P и выполняет goroutine из его очереди.
- Если goroutine блокируется (например, на системном вызове), M отвязывается от P и ищет другую работу, а P назначается другому M.
- Планировщик балансирует нагрузку между P, распределяя goroutine для эффективного использования потоков ОС.
Это позволяет Go эффективно управлять тысячами горутин с небольшими накладными расходами, обеспечивая конкурентность и параллелизм без явного управления потоками.