Back to questions
Senior
8
Расскажи про планировщик Go и GMP-модель, а также механизм work stealing.
Companies where asked
.wrk
Answer from 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, чтобы равномерно распределить работу и повысить эффективность использования потоков.
Такой подход позволяет эффективно масштабировать многопоточные программы, минимизируя накладные расходы на переключение контекста и блокировки.