Sobes.tech
Back to questions
Senior
4

Расскажи про модель GMP в Go. Как работают очереди, что такое handoff, work stealing, netpoller?

Companies where asked
А7

Answer from AI

sobes.tech AI

Модель GMP в Go — это основа планировщика горутин, где:

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

Каждый P имеет очередь горутин (run queue), куда помещаются готовые к выполнению G. M берёт G из очереди P и запускает их.

Handoff — это механизм передачи горутины от одного M к другому без помещения в глобальную очередь, чтобы минимизировать задержки.

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

Netpoller — это внутренний механизм, который отслеживает сетевые события (например, готовность сокетов) и пробуждает соответствующие горутины для обработки.

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