Sobes.tech
Senior

Kas yra gorutina? Kaip ji sukurta?

sobes.tech AI

Atsakymas iš AI

Gorutina yra lengvas vykdymo srautas Go kalboje. Skirtingai nuo sisteminių siūlų, gorutinos valdomos Go vykdymo laiko ir turi labai mažą steką (pradedama nuo kelių kilobaitų ir gali dinamiškai augti). Tai leidžia vienu metu paleisti šimtus tūkstančių gorutinų su mažais išlaidų kaštais.

Gorutinos struktūra:

  • Kuriant gorutinas (go operatoriumi), Go planuotojas jas įdeda į paruoštų užduočių eilę.
  • Go vykdymo laikas naudoja M:N planavimą: M sisteminių siūlų (OS siūlai) aptarnauja N gorutinų.
  • Gorutinos keičia kontekstą vykdymo laiko lygyje, tai yra greičiau nei keisti sisteminius siūlus.
  • Kiekvienas siūlas (M) gali vykdyti kelias gorutinas (N), perjungiant tarp jų blokuojantis ar pagal poreikį.

Gorutinos kūrimo pavyzdys:

func sayHello() {
    fmt.Println("Sveiki iš gorutinos")
}

func main() {
    go sayHello() // paleidžiame gorutina
    time.Sleep(time.Second) // laukiame, kad gorutina spėtų įvykdyti
}