Junior — Middle
Czy planista systemu operacyjnego obowiązkowo wstrzymuje wykonanie goroutine?
sobes.tech AI
Odpowiedź od AI
Nie, planista systemu operacyjnego nie wstrzymuje obowiązkowo wykonywania gorutyny w Go. Gorutyny to lekkie wątki zarządzane przez środowisko uruchomieniowe Go, a nie bezpośrednio przez system operacyjny.
Środowisko uruchomieniowe Go samodzielnie planuje wykonywanie gorutyn na wątkach systemowych (planowanie M:N). Gorutyny mogą być zawieszane i wznawiane w następujących przypadkach:
- Gdy gorutyna oczekuje na wejście/wyjście lub blokuje się na synchronizacji.
- Gdy gorutyna wyraźnie oddaje kontrolę (np. wywołanie
runtime.Gosched()). - Gdy konieczne jest zrównoważenie obciążenia między wątkami.
W związku z tym przełączanie między gorutynami odbywa się kooperatywnie i pod kontrolą środowiska uruchomieniowego Go, a nie wymuszone przez system operacyjny.