Что происходит когда горутина делает syscall?

Senior
158 просмотров
AFK Offer AI

При блокирующем syscall runtime делает sysmon handoff: забирает P у текущего M и отдаёт его свободному или новому потоку. Горутина остаётся привязанной к заблокированному M. Когда syscall завершается, горутина пытается найти свободный P. Если P нет — горутина идёт в глобальную очередь. Это позволяет не блокировать выполнение остальных горутин.

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

Что выведет: switch 1 { case 1: fmt.Println("one"); case 2: fmt.Println("two") }?