Sobes.tech
Back to questions
Senior
2

В чём недостаток горутин?

Companies where asked
RedLab

Answer from AI

sobes.tech AI

Горутины в Go — очень лёгкие потоки, но у них есть свои недостатки:

  • Отсутствие контроля над планировщиком: Горутины планируются рантаймом Go, и разработчик не может напрямую управлять их приоритетами или временем выполнения.
  • Память: Каждая горутина занимает стек (начинается с нескольких килобайт и может расти), что хоть и мало по сравнению с потоками ОС, но при огромном количестве горутин может привести к значительному потреблению памяти.
  • Отладка и профилирование: Из-за большого количества горутин и их динамического планирования сложнее отлаживать гонки данных и производительность.
  • Потенциальные утечки: Если горутина блокируется или не завершается, это может привести к утечкам ресурсов, которые сложно отследить.

Пример:

func main() {
    for i := 0; i < 1000000; i++ {
        go func(n int) {
            // Некоторая работа
            fmt.Println(n)
        }(i)
    }
    time.Sleep(time.Second)
}

Здесь миллион горутин может привести к значительной нагрузке на память и CPU.