Что такое runtime и scheduler?

Middle
922 просмотров
AFK Offer AI

Go runtime — среда выполнения, встроенная в каждый бинарник. Включает: scheduler, garbage collector, memory allocator, goroutine management.

Scheduler работает по модели GMP:

  • G (Goroutine): задача для выполнения
  • M (Machine): поток ОС
  • P (Processor): логический процессор, GOMAXPROCS штук
Алгоритм: P имеет локальную очередь горутин. M берёт горутину из очереди P и выполняет. Если очередь пуста — work stealing из других P или глобальной очереди.

Точки вытеснения: вызовы функций, channel operations, syscalls. С Go 1.14 — асинхронная преемптивность через сигналы (горутина без вызовов тоже прерывается). GOMAXPROCS по умолчанию = кол-во CPU.

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

HTTP/1.1 vs HTTP/2?