Sobes.tech
Junior — Middle

Kui palju goroutine'i saab samaaegselt käivitada rakenduses?

sobes.tech AI

Vastus AI-lt

Go keeles ei ole range piirangut maksimaalse arvu goroutine, mis samaegselt töötavad. Teoreetiliselt võib neid olla väga palju — kümneid, sadu ja mõnikord miljoneid, sõltuvalt süsteemi ressurssidest (mälu, CPU).

Goroutine'id on väga kergekaalulised võrreldes operatsioonisüsteemi niitidega, kuna nad kasutavad dünaamilist virna, mis kasvab vastavalt vajadusele.

Kuid praktiline piirang sõltub:

  • saadaval olevast mälust (iga goroutine võtab vähemalt mõned kilobaitid).
  • rakenduse loogikast ja sünkroniseerimisest goroutine'ide vahel.
  • Go planeerija koormusest.

Näide suure arvu goroutine'ide käivitamisest:

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()
            // lihtne töö
            _ = i * 2
        }(i)
    }

    wg.Wait()
    fmt.Println("Kõik goroutine'id on lõpetanud")
}

Seega, piirang on pigem praktiline kui süsteemne.