Ответ
Горутины легковеснее потоков ОС:
- Потребляют меньше памяти (2KB стека против 1MB у потоков)
- Быстрее создаются и переключаются (нет накладных расходов на системные вызовы)
Управляются рантаймом Go, а не ОС:
- Планировщик Go эффективно распределяет горутины по потокам ОС
- Работают даже при блокировке одной горутины
Пример создания 1000 горутин без проблем:
for i := 0; i < 1000; i++ {
go func() {
// работа горутины
}()
}
Потоки ОС в таком количестве создадут высокую нагрузку. Горутины — идеальный выбор для конкурентных задач в Go.