Junior — Middle
Cum are loc alocarea și gestionarea memoriei atunci când se folosesc goroutines în limbajul Go?
sobes.tech AI
Răspuns de la AI
În Go, goroutine-urile sunt fire ușoare gestionate de runtime-ul Go. La crearea unei goroutine, se alocă un mic stivă de memorie (de obicei în jur de 2 KB), care poate crește și scade dinamic după nevoie. Acest lucru permite utilizarea eficientă a memoriei, deoarece stiva nu este fixă și se adaptează la sarcină.
Gestionarea memoriei se face prin planificatorul Go, care distribuie goroutine-urile pe firele de sistem. Stiva goroutine-ului este plasată pe heap, iar colectorul de gunoi eliberează automat memoria neutilizată.
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
}
Astfel, Go ascunde dezvoltatorului detaliile gestionării memoriei goroutine-urilor, asigurând simplitate și eficiență în execuția paralelă.