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