Как происходит preemption горутин в Go?

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

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

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

gomock vs mockery vs moq — что выбрать?