Sobes.tech
Junior — Middle

Jaka jest różnica między gorutyną a wątkiem systemowym w kontekście wykonywania zadań?

sobes.tech AI

Odpowiedź od AI

Gorutyna to lekka jednostka wykonawcza zarządzana przez środowisko uruchomieniowe Go (runtime), która zużywa bardzo mało pamięci i może być uruchomiona w dużej liczbie jednocześnie. Wątek systemowy (thread) to cięższa jednostka planowania systemu operacyjnego.

Główne różnice:

  • Gorutyny są znacznie lżejsze pod względem zasobów niż wątki systemowe.
  • Planowanie gorutyn odbywa się wewnątrz środowiska uruchomieniowego Go, a nie przez OS.
  • Tysiące gorutyn mogą działać jednocześnie, podczas gdy liczba wątków systemowych jest zwykle mniejsza ze względu na koszty tworzenia i przełączania.

Przykład tworzenia gorutyny:

func zadanie() {
    fmt.Println("Wykonywanie zadania")
}

func main() {
    go zadanie() // uruchom gorutynę
    time.Sleep(time.Second) // czekaj, aż gorutyna się wykona
}

W ten sposób gorutyny pozwalają efektywnie wykonywać wiele zadań równolegle przy mniejszych nakładach.