Go under the hood
Go: Under the Hood

Глава 9. Планировщик горутин

(Управление стеком выполнения первоначально относилось к этой главе; теперь оно перенесено в Главу 14. Управление стеком выполнения.)

Повышение производительности не берется из ниоткуда, оно сопровождается увеличением сложности кода.
-- Дмитрий Вьюков

С точки зрения автора, планировщик Go — самый увлекательный компонент во всем рантайме. Для самого Go его дизайн и реализация напрямую влияют на все остальные компоненты рантайма, и это та часть, которая напрямую взаимодействует с кодом пользовательского пространства. Для пользователей Go планировщик скрывает чрезвычайно сложный механизм рантайма за одним простым ключевым словом go. Чтобы гарантировать высокую производительность, планировщик должен эффективно использовать параллелизм и локальность вычислений; чтобы сохранить простоту пользовательского пространства, планировщик должен эффективно управлять сетевым поллером и сборщиком мусора, которые невидимы для кода пользовательского пространства; чтобы гарантировать корректность выполнения кода, он также должен строго реализовывать порядок памяти пользовательского пространства и так далее. Короче говоря, дизайн планировщика напрямую определяет то, в каком виде представлен исходный код рантайма Go.