Как работает stack growth в Go?

Middle+
346 просмотров
AFK Offer AI

Горутина стартует с маленьким стеком (несколько КБ). Перед каждым вызовом функции компилятор вставляет проверку: хватит ли стека? Если нет — рантайм аллоцирует стек в два раза больше, копирует старый, обновляет все указатели на стек и продолжает. Это называется copyable stacks. Раньше использовали segmented stacks, но от них отказались из-за hot split проблемы.

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

Что такое Exec?