Senior
Hová kerülnek a goroutine-ok a létrehozáskor: a helyi vagy a globális sorba a Go ütemezőben?
sobes.tech MI
Válasz az MI-től
Amikor egy goroutine-t hozunk létre Go-ban, az a helyi futási sorba (local run queue) kerül, amely egy adott M-hez (géphez, rendszer szálhoz) tartozik.
A Go futásideje egy M:N modellt használ, ahol M a rendszer szálak, G pedig a goroutine-ok. Minden M-nek megvan a saját helyi goroutine sorozata a végrehajtáshoz. Ha a helyi sor túlcsordul vagy üres, a tervező kiegyensúlyozhatja a goroutine-okat a helyi és a globális sor között.
Így az új goroutine először a tervező helyi sorába kerül, ami hatékonyan kihasználja a processzor cache-ét és csökkenti a kontextusváltás költségeit.