Junior — Middle
Ako sa pri spustení rozdelí štyri gorutiny na štyri procesorové jadrá?
sobes.tech AI
Odpoveď od AI
V Go, plánovač goroutine (Goroutine scheduler) rozdeľuje goroutine medzi systémové vlákna (M), ktoré sú naopak viazané na CPU jadrá.
Ak máte 4 goroutine a 4 CPU jadrá, pri spustení plánovača môže rozdeľovať každú goroutine na samostatné jadro, čím zabezpečí paralelné vykonávanie. To je možné, ak je premenná prostredia GOMAXPROCS nastavená na 4 (v moderných verziách Go je predvolene rovná počtu dostupných jadier).
Príklad:
runtime.GOMAXPROCS(4) // nastaví počet dostupných vlákien na 4
for i := 0; i < 4; i++ {
go func(id int) {
fmt.Printf("Goroutine %d spustená\n", id)
// práca
}(i)
}
Planovač Go bude rozdeľovať goroutine medzi vlákna, ktoré môžu byť vykonávané na rôznych jadrách, čo umožňuje efektívne využitie multiprocesorových systémov. Presné rozdelenie však závisí od zaťaženia systému a vnútorného plánovača.