Почему горутина быстрее thread

«Почему горутина быстрее thread» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Горутины:

  • Занимают меньше памяти (2KB стек vs 1MB у thread)
  • Создаются быстрее (нет системных вызовов)
  • Переключаются быстрее (нет переключения в ядро ОС)
  • Масштабируются лучше (тысячи горутин на 1 поток ОС)

Пример:

func main() {
    for i := 0; i < 10000; i++ {
        go func() { // Легковесная горутина
            // работа
        }()
    }
    // 10k потоков убили бы систему
}