Назад к вопросам
Yadro
Middle+
4
Что такое горутина? Чем отличается от потока ОС? Кто управляет горутинами?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Горутина — это легковесный поток выполнения в языке Go, управляемый рантаймом Go, а не операционной системой. В отличие от потоков ОС, горутины занимают гораздо меньше памяти (обычно несколько килобайт стека, который может динамически расти и уменьшаться), и их создание и переключение гораздо дешевле по ресурсам.
Основные отличия от потоков ОС:
- Горутины планируются и управляются Go-рантаймом, а не ОС.
- Могут быть тысячи и десятки тысяч горутин в одном процессе без значительной нагрузки.
- Переключение контекста между горутинами происходит быстрее, так как не требует переключения ядра.
Управление горутинами осуществляет Go-рантайм, который содержит собственный планировщик (M:N scheduler), сопоставляющий множество горутин (G) с меньшим числом потоков ОС (M). Это позволяет эффективно использовать системные ресурсы и упрощает параллельное программирование.