Sobes.tech
Back to questions
Middle+
3

Что такое горутина? Чем отличается от потока ОС? Кто управляет горутинами?

Companies where asked
YadroYadro

Answer from AI

sobes.tech AI

Горутина — это легковесный поток выполнения в языке Go, управляемый рантаймом Go, а не операционной системой. В отличие от потоков ОС, горутины занимают гораздо меньше памяти (обычно несколько килобайт стека, который может динамически расти и уменьшаться), и их создание и переключение гораздо дешевле по ресурсам.

Основные отличия от потоков ОС:

  • Горутины планируются и управляются Go-рантаймом, а не ОС.
  • Могут быть тысячи и десятки тысяч горутин в одном процессе без значительной нагрузки.
  • Переключение контекста между горутинами происходит быстрее, так как не требует переключения ядра.

Управление горутинами осуществляет Go-рантайм, который содержит собственный планировщик (M:N scheduler), сопоставляющий множество горутин (G) с меньшим числом потоков ОС (M). Это позволяет эффективно использовать системные ресурсы и упрощает параллельное программирование.