Какие сущности есть в планировщике Go?

Principal
481 просмотров
AFK Offer AI

Четыре ключевые сущности. G (goroutine) — задача с собственным стеком и состоянием. M (machine) — OS-тред, выполняет код горутин. P (processor) — логический процессор, содержит локальную очередь G и mcache, GOMAXPROCS штук. schedt — глобальный планировщик с глобальной очередью.

Дополнительно: sudog — элемент очереди ожидания (channel send/recv). mcache/mspan — аллокация памяти привязана к P.

sysmon — отдельная горутина мониторинга: детектит длинные syscall, preempts долгие горутины (с Go 1.14 — asynchronous preemption через сигналы), запускает force GC. Netpoller интегрирован — I/O не блокирует M.

Следующий вопрос

Как работать с request body?