Sobes.tech
Senior

Kas ir gorutina? Kā tā ir strukturēta?

sobes.tech AI

Atbilde no AI

Gorutīna ir viegls izpildes pavedienis Go valodā. Atšķirībā no sistēmas pavedieniem, gorutīnas tiek pārvaldītas ar Go izpildlaiku un tām ir ļoti mazs steks (sākas ar dažiem kilobaitiem un var dinamiski pieaugt). Tas ļauj vienlaikus palaist simtiem tūkstošu gorutīnu ar zemu overhead.

Gorutīnas struktūra:

  • Izveidojot gorutīnu (go operatora dēļ), Go plānotājs to ievieto gatavo uzdevumu rindā.
  • Go izpildlaiks izmanto M:N plānošanu: M sistēmas pavedieni (OS pavedieni) apkalpo N gorutīnas.
  • Gorutīnas pārslēdzas uz izpildes līmeņa, kas ir ātrāk nekā sistēmas pavedienu pārslēgšanās.
  • Katrs pavediens (M) var izpildīt vairākas gorutīnas (N), pārslēdzoties starp tām bloķēšanas vai pēc vajadzības gadījumā.

Gorutīnas izveides piemērs:

func sayHello() {
    fmt.Println("Sveiciens no gorutinas")
}

func main() {
    go sayHello() // palaist gorutinu
    time.Sleep(time.Second) // gaidīt, lai gorutina varētu izpildīties
}