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