Что такое preemption point?

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

Preemption point — место в коде, где шедулер может вытеснить горутину и отдать процессорное время другой. До Go 1.14 preemption points были только в прологах функций (проверка morestack) — то есть tight loop без вызова функций мог вечно держать P. С Go 1.14 добавили asynchronous preemption через сигналы ОС, и теперь горутину можно вытеснить практически в любом безопасном месте. Безопасное место — где рантайм может корректно просканировать стек для GC.

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

Как расти от middle к senior?