Кто управляет горутинами?

Junior
1.1k просмотров
AFK Offer AI

Горутинами управляет рантайм-планировщик Go (Go scheduler). Он работает в user-space, без участия ядра ОС. Модель GMP: горутины (G) распределяются по процессорам (P), которые привязаны к OS-потокам (M).

Планировщик переключает горутины в определённых точках: вызовы функций, операции с каналами, системные вызовы, runtime.Gosched(). С Go 1.14 есть вытеснение через сигналы для long-running горутин.

Количество одновременных OS-потоков определяется GOMAXPROCS (по умолчанию — число ядер CPU). Горутин может быть миллионы, потоков — десятки.

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

Что такое blue-green deployment?