На сколько мне известно жизнь go делится на 2 истории:
- до 1.14
- после 1.14
До 1.14 в go goroutine - это файберы с кооперативной многозадачностью (т.е. горутины передают управление другим горутинам, когда им удобно). Вообщем тут +/- всё понятно, работает так, как везде.
В 1.14 какая-то очередная революция и теперь там вытесняющая многозадачность. Есть отдельный тред, который по сути является таймером и его задача посылать сигналы потокам, чтобы они переключались по истечении кванта времени (аналог таймеров в наших машинах, которые прерывания генерят раз в сколько-то процессору). Говорят там у них какая-то проблема была с тем, что в userspace такие прерывания могут происходить абы где (т.е. есть какие-то точки, где такие остановки безопасные, видимо атомарные, а есть и небезопасные) и они там её решали как-то.
Наверняка есть тут люди, которые объяснят это всё получше.