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