Junior — Middle
Jak odbywa się przydział i zarządzanie pamięcią podczas korzystania z goroutines w języku Go?
sobes.tech AI
Odpowiedź od AI
W Go, goroutines to lekkie wątki zarządzane przez środowisko uruchomieniowe Go. Tworząc goroutine, przydzielany jest mały stos pamięci (zwykle około 2 KB), który może się dynamicznie powiększać i zmniejszać w razie potrzeby. Pozwala to na efektywne wykorzystanie pamięci, ponieważ stos nie jest stały i dostosowuje się do obciążenia.
Zarządzanie pamięcią odbywa się przez planistę Go, który rozdziela goroutines na systemowe wątki. Stos goroutine znajduje się na stercie, a garbage collector automatycznie zwalnia nieużywaną pamięć.
Przykład tworzenia goroutine:
func sayHello() {
fmt.Println("Cześć z goroutine")
}
func main() {
go sayHello() // uruchamia goroutine
time.Sleep(time.Second) // czeka, aż goroutine się wykona
}
W ten sposób Go ukrywa przed programistą szczegóły zarządzania pamięcią goroutines, zapewniając prostotę i wydajność równoległego wykonywania.