Горутины управляются рантаймом Go, а не планировщиком ОС. Это дает несколько преимуществ:
Легковесность. Горутина использует значительно меньше памяти для стека (несколько КБ) по сравнению с потоком ОС (несколько МБ). Тысячи или миллионы горутин могут работать одновременно на небольшом количестве потоков ОС.
Быстрое создание и уничтожение. Создание и уничтожение горутин происходит гораздо быстрее, поскольку не требует вызовов к ядру ОС.
Кооперативная многозадачность (в определенной степени). Хотя планировщик Go преемтивный, переключение контекста между горутинами происходит быстрее, так как оно выполняется в пользовательском пространстве.
Масштабируемость. Легко создавать огромное количество горутин для обработки большого количества конкурентных задач.
Более простое взаимодействие. Использование каналов для обмена данными между горутинами является более безопасным и идиоматическим способом конкурентного программирования по сравнению с низкоуровневыми примитивами синхронизации потоков ОС.
go