🔴 Сложный · 3 очк. Go runtime
Что такое GMP-модель в планировщике Go?
A Go Memory Pool
B Goroutine, Machine (поток ОС), Processor (логический процессор)
C Global Mutex Protocol
D Garbage, Mark, Process
Объяснение вопроса

G (goroutine) - горутина. M (machine) - поток ОС. P (processor) - логический процессор, у каждого есть локальная очередь горутин (run queue). Один P привязан к одному M; M выполняет G из очереди своего P.

Work stealing

Если у P очередь пуста, он может "украсть" половину горутин из очереди другого P. Так нагрузка распределяется между ядрами.

Схема

M1-P1 -> [G, G, G]   M2-P2 -> [G, G]
           |                    |
         выполнение         выполнение
Глобальная очередь горутин (редко используется)

Локальные очереди уменьшают конкуренцию за общую очередь и улучшают кеш-локальность.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.