Sobes.tech
Senior

Ce este o gorutină? Cum este structurată?

sobes.tech AI

Răspuns de la AI

O goroutine este un fir de execuție ușor în limbajul Go. Spre deosebire de firele de sistem, goroutine-urile sunt gestionate de runtime-ul Go și au un stiv foarte mic (începe cu câțiva kilobytes și poate crește dinamic). Acest lucru permite rularea a sute de mii de goroutine simultan cu costuri reduse de overhead.

Structura unei goroutine:

  • La crearea unei goroutine (cu operatorul go), planificatorul Go o plasează în coada de sarcini gata de executat.
  • Runtime-ul Go folosește o planificare M:N: M fire de sistem (thread-uri OS) gestionează N goroutine.
  • Goroutine-urile schimbă contextul la nivel de runtime, ceea ce este mai rapid decât schimbarea firelor de sistem.
  • Fiecare fir (M) poate executa mai multe goroutine (N), alternând între ele în caz de blocaje sau după nevoie.

Exemplu de creare a unei goroutine:

func sayHello() {
    fmt.Println("Salut din goroutine")
}

func main() {
    go sayHello() // pornește goroutine
    time.Sleep(time.Second) // așteaptă pentru ca goroutine să se execute
}