Что такое MPG

«Что такое MPG» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

  • M выполняет код на ядре CPU.
  • P управляет локальной очередью горутин и связывает M с G.
  • G — легковесный поток, который планируется P.

Пример работы:

func main() {
    go func() { fmt.Println("Goroutine") }() // Создаётся G
    runtime.GOMAXPROCS(1) // Устанавливаем 1 P
    time.Sleep(time.Millisecond)
}

Нюансы:

  • Количество P обычно равно GOMAXPROCS.
  • Если P нет свободных, G попадает в глобальную очередь.
  • M может блокироваться (например, на syscall), тогда P переходит к другой M.