Sobes.tech
Junior — Middle

Kas daro goroutines efektyvesnes tradicinių siūlų palyginti?

sobes.tech AI

Atsakymas iš AI

Gorutinos Go kalboje yra efektyvesnės nei tradiciniai sraigtai (threads), dėka kelių pagrindinių ypatybių:

  • Lengvumas: Gorutinos užima labai mažai atminties (paprastai apie 2 KB steko), tuo tarpu sisteminiai srautai reikalauja daug daugiau atminties.
  • Kalbos lygio planuotojas: Go turi savo gorutinos planuotoją, kuris efektyviai paskirsto jų vykdymą tarp sisteminių srautų, leidžiantį vienu metu paleisti tūkstančius gorutinų be reikšmingų išlaidų.
  • Greitas kūrimas ir kontekstų keitimas: Gorutinų kūrimas ir perjungimas vyksta daug greičiau nei tarp OS srautų, tai sumažina daugelio užduočių vykdymo išlaidas.

Gorutinos kūrimo pavyzdys:

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

func main() {
    go sayHello() // paleisti gorutiną
    time.Sleep(time.Second) // laukiame, kol gorutina įvykdys
}