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