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
}