Sobes.tech
Senior
51

Papaskink apie Go planuotoją ir GMP modelį, taip pat apie work stealing mechanizmą.

Įmonės kur klausė
.wrk

Atsakymas iš AI

sobes.tech AI

Планировщик Go основан на модели GMP, где:

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

В Go рантайме есть фиксированное число P, определяющее максимальное количество одновременно выполняемых горутин на уровне ОС-потоков.

Механизм работы:

  • Горутину (G) нужно выполнить — она назначается на P.
  • P связывается с M (потоком ОС), и M выполняет G.
  • Когда G блокируется (например, на системном вызове), M освобождается и может выполнять другую G.

Work stealing — это механизм балансировки нагрузки между P. Если у одного P очередь горутин пуста, он может «украсть» горутины из очереди другого P, чтобы равномерно распределить работу и повысить эффективность использования потоков.

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