Горутины легковесны благодаря небольшим растущим стекам и планированию множества задач поверх ограниченного набора потоков ОС. Они дешевле потоков, но не бесплатны.
В чём особенность горутин в Go? За счёт чего они легковесные?
Горутины легковесны благодаря небольшим растущим стекам и планированию множества задач поверх ограниченного набора потоков ОС. Они дешевле потоков, но не бесплатны.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Горутины легковесны благодаря небольшим растущим стекам и планированию множества задач поверх ограниченного набора потоков ОС. Они дешевле потоков, но не бесплатны.
Создание горутины не означает создание отдельного ОС-потока. Runtime распределяет готовые задачи между потоками, а ожидающие горутины могут быть припаркованы.
Размер стека меняется по мере необходимости. Однако каждая задача всё равно занимает память и может удерживать данные или ресурсы. Поэтому число горутин следует ограничивать по нагрузке и обеспечивать их завершение; утечка ожидающих горутин остаётся реальной проблемой.
Источник: go.dev.