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.