Junior — Middle
A működtetőrendszer ütemezője kötelezően felfüggeszti a goroutine végrehajtását?
sobes.tech MI
Válasz az MI-től
Nem, az operációs rendszer ütemezője nem szünteti meg kötelezően a Go-ban lévő gorutina végrehajtását. A gorutinok könnyű szálak, amelyeket a Go futásideje kezel, nem közvetlenül az OS.
A Go futásideje önállóan tervezi a gorutinok végrehajtását a rendszer szálakon (M:N ütemezés). A gorutinok szüneteltethetők és újraindíthatók a következő esetekben:
- Amikor egy gorutin vár bemenet/kimenet vagy blokkol a szinkronizáció során.
- Amikor egy gorutin kifejezetten átadja az irányítást (pl.
runtime.Gosched()hívásával). - Amikor szükséges a terhelés kiegyensúlyozása a szálak között.
Ezért a gorutinok közötti váltás kooperatív módon és a Go futásidejének irányítása alatt történik, nem kötelezően az OS által.