Ответ
Горутины легковеснее потоков (threads) благодаря кооперативной многозадачности и работе в пространстве пользователя. Они управляются рантаймом Go, а не ОС, что уменьшает накладные расходы на создание и переключение контекста.
Горутины:
- Занимают меньше памяти (2KB стек vs 1MB у thread)
- Создаются быстрее (нет системных вызовов)
- Переключаются быстрее (нет переключения в ядро ОС)
- Масштабируются лучше (тысячи горутин на 1 поток ОС)
Пример:
func main() {
for i := 0; i < 10000; i++ {
go func() { // Легковесная горутина
// работа
}()
}
// 10k потоков убили бы систему
}