В чём особенность горутин в Go? За счёт чего они легковесные?

Горутины легковесны благодаря небольшим растущим стекам и планированию множества задач поверх ограниченного набора потоков ОС. Они дешевле потоков, но не бесплатны.

Короткий ответ

Что ответить на собеседовании

Горутины легковесны благодаря небольшим растущим стекам и планированию множества задач поверх ограниченного набора потоков ОС. Они дешевле потоков, но не бесплатны.

Подробный разбор

Ответ с пояснениями

Горутины легковесны благодаря небольшим растущим стекам и планированию множества задач поверх ограниченного набора потоков ОС. Они дешевле потоков, но не бесплатны.

Создание горутины не означает создание отдельного ОС-потока. Runtime распределяет готовые задачи между потоками, а ожидающие горутины могут быть припаркованы.

Размер стека меняется по мере необходимости. Однако каждая задача всё равно занимает память и может удерживать данные или ресурсы. Поэтому число горутин следует ограничивать по нагрузке и обеспечивать их завершение; утечка ожидающих горутин остаётся реальной проблемой.

Источник: go.dev.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее