Junior — Middle
Co sprawia, że goroutines są bardziej wydajne w porównaniu do tradycyjnych wątków?
sobes.tech AI
Odpowiedź od AI
Gorutiny w Go są bardziej wydajne w porównaniu z tradycyjnymi wątkami dzięki kilku kluczowym cechom:
- Lekkość: Gorutiny zajmują bardzo mało pamięci (zwykle około 2 KB stosu), podczas gdy wątki systemowe wymagają znacznie więcej pamięci.
- Planista na poziomie języka: Go ma własny planista gorutin, który efektywnie rozdziela ich wykonanie na wątki systemowe, pozwalając na uruchomienie tysięcy gorutin jednocześnie bez znacznych kosztów.
- Szybkie tworzenie i przełączanie kontekstu: Tworzenie i przełączanie między gorutinami jest znacznie szybsze niż między wątkami OS, co zmniejsza koszty wielozadaniowości.
Przykład tworzenia gorutiny:
func sayHello() {
fmt.Println("Witaj z gorutiny")
}
func main() {
go sayHello() // uruchom gorutinę
time.Sleep(time.Second) // czekaj, aż gorutina się wykona
}