Sobes.tech
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
}