Sobes.tech
Junior — Middle

Cik maksimāli gorutīnu var vienlaikus palaist lietojumprogrammā?

sobes.tech AI

Atbilde no AI

Go valodā nav stingra ierobežojuma maksimālajam gorutīnu skaitam, kas var darboties vienlaikus. Teorētiski, to var būt ļoti daudz — desmiti, simti un dažreiz miljoni, atkarībā no sistēmas resursiem (atmiņas, CPU).

Gorutīnas ir ļoti vieglas salīdzinājumā ar operētājsistēmas pavedieniem, jo tās izmanto dinamisku steku, kas aug pēc vajadzības.

Tomēr praktiskais ierobežojums ir atkarīgs no:

  • Pieejamās atmiņas apjoma (katra gorutīna aizņem vismaz dažus kilobaitus).
  • Programmas loģikas un sinhronizācijas starp gorutīnām.
  • Go plānotāja slodzes.

Piemērs, kā palaist daudz gorutīnu:

package main

import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    const n = 100000
    wg.Add(n)

    for i := 0; i < n; i++ {
        go func(i int) {
            defer wg.Done()
            // vienkāršs darbs
            _ = i * 2
        }(i)
    }

    wg.Wait()
    fmt.Println("Visas gorutīnas ir pabeigtas")
}

Tādēļ ierobežojums ir vairāk praktisks nekā sistēmisks.