С Go 1.14 используется asynchronous preemption. Scheduler шлёт сигнал SIGURG потоку, тот прерывает выполнение горутины в safe point. До 1.14 preemption была только кооперативной — в вызовах функций через проверку stackguard. Без preemption tight loop без вызовов мог заблокировать весь P навсегда.
Как происходит preemption горутин в Go?
Senior
102 просмотровAFK Offer AI
Как спроектировать load balancer на Go?