Sobes.tech
Junior — Middle

Kuo skiriasi kodo vykdymas goroutine ir sistemos lygio sistemos siūlo darbai?

sobes.tech AI

Atsakymas iš AI

Gorutinos Go kalba yra lengvos srovės, valdomos Go vykdymo laiko, o ne operacinės sistemos. Pagrindiniai skirtumai:

  • Lengvumas: Gorutinos užima labai mažai atminties (paprastai keletą kilobaitų steko), o sisteminės srovės reikalauja daug daugiau išteklių.
  • Planavimas: Gorutinos planuotojas yra integruotas į Go vykdymo laiką ir paskirsto gorutinas tarp sisteminių srovių, leidžiant efektyviai naudoti CPU.
  • Kūrimas ir perjungimas: Gorutinos kūrimas ir perjungimas yra greitesnis nei tarp sisteminių srovių, nes nereikia keisti branduolio konteksto.

Pavyzdys:

func main() {
    go func() {
        fmt.Println("Gorutina")
    }()
    fmt.Println("Pagrindinė srovė")
    time.Sleep(time.Second) // Laukiame gorutinos pabaigos
}

Čia gorutina pradeda veikti proceso viduje, bet tiesiogiai nesutampa su atskira sistemine srove.