Junior — Middle
Planificatorul sistemului de operare suspendă obligatoriu execuția unei goroutines?
sobes.tech AI
Răspuns de la AI
Nu, planificatorul sistemului de operare nu întrerupe obligatoriu executarea unei goroutine în Go. Goroutine-urile sunt fire ușoare gestionate de runtime-ul Go, nu direct de sistemul de operare.
Runtime-ul Go planifică singur executarea goroutine-urilor pe firele de sistem (planificare M:N). Goroutine-urile pot fi suspendate și reluate în următoarele cazuri:
- Când o goroutine așteaptă intrare/ieșire sau se blochează la sincronizare.
- Când o goroutine cedează explicit controlul (de exemplu, apelul
runtime.Gosched()). - Când este necesar să se echilibreze sarcina între fire.
Prin urmare, comutarea între goroutine-uri are loc cooperativ și sub controlul runtime-ului Go, nu forțat de sistemul de operare.