Sobes.tech
Junior — Middle

Koji je maksimalni broj gorutina koje se mogu pokrenuti istovremeno bez značajnih problema za sistem?

sobes.tech АИ

Одговор од АИ

U Go, maksimalni broj gorutina koje se mogu istovremeno pokrenuti zavisi od sistemskih resursa (RAM memorije, CPU vremena) i od prirode zadataka koje obavljaju. Teoretski, moguće je pokrenuti stotine hiljada ili čak milione gorutina, jer su one veoma lagane u poređenju sa nitima operativnog sistema.

Međutim, u praksi:

  • Ako gorutine aktivno koriste CPU, prevelik broj može dovesti do smanjenja performansi zbog prebacivanja konteksta.
  • Ako gorutine blokiraju na ulazu/izlazu ili čekaju događaje, može ih biti znatno više bez većih problema.

Obično, u realnim aplikacijama, pokreće se od nekoliko stotina do nekoliko hiljada gorutina bez problema. Ako je potrebno skaliranje, preporučuje se profilisanje aplikacije i praćenje potrošnje memorije i opterećenja CPU-a.

Primer kreiranja velikog broja gorutina:

for i := 0; i < 100000; i++ {
    go func(n int) {
        // neki posao
        fmt.Println(n)
    }(i)
}