Sobes.tech
Back to questions
Senior
2

Расскажите про планировщик Go (GMP модель)

Companies where asked
А7

Answer from AI

sobes.tech AI

Планировщик Go основан на модели GMP — это абстракция, которая помогает эффективно управлять конкурентностью в языке.

  • G (goroutine) — легковесная нить исполнения, которую создает разработчик.
  • M (machine) — системный поток ОС, на котором выполняются goroutine.
  • P (processor) — логический процессор, который связывает G и M, управляет их выполнением.

Работа планировщика:

  1. У каждого P есть очередь готовых к выполнению G.
  2. M привязывается к P и выполняет G из его очереди.
  3. Если G блокируется (например, на ввод/вывод), M освобождается и может обслуживать другой P.
  4. Планировщик балансирует нагрузку между P, распределяя G по очередям.

Это позволяет Go эффективно использовать системные потоки, минимизируя накладные расходы и обеспечивая масштабируемость.

Пример создания goroutine:

func main() {
    go func() {
        fmt.Println("Hello from goroutine")
    }()
    time.Sleep(time.Second) // Ждем завершения
}