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