Ответ
GMP (Goroutine, M, P) — это модель планирования в Go, управляющая горутинами.
- G (Goroutine) — легковесная сущность, выполняющая код.
- M (Machine) — поток ОС, который исполняет горутины.
- P (Processor) — виртуальный процессор, управляющий контекстом выполнения (например, локальной очередью горутин).
Как работает:
- Каждый
Pимеет локальную очередь горутин. Mпривязывается кPи выполняет горутины из его очереди.- Если очередь
Pпуста, он может украсть горутину у другогоP(work-stealing).
func main() {
go func() { fmt.Println("Hello from goroutine!") }() // G создается и планируется P
time.Sleep(time.Millisecond) // Даем время на выполнение
}
Плюсы:
- Эффективное использование CPU (меньше блокировок, work-stealing).
- Масштабируемость на многоядерных системах.