Junior — Middle
Төрт гурутиндин төрт процессор ядросуна бөлүштүрүлүшү кандай болуп жатат?
sobes.tech AI
AIден жооп
Go'да, goroutine'лердин (Goroutine scheduler) пландашысы goroutine'лерди системалык жиптерге (M) бөлүштүрөт, ал эми алар өз кезегинде процессордун ядролоруна байланыштуу.
Эгерде сизде 4 goroutine жана 4 процессор ядросу болсо, пландачы ишке киргизилгени менен ар бир goroutine'ни башка ядрого бөлүштүрө алат, бул параллелдүү ишке ашырууну камсыздайт. Бул GOMAXPROCS айрымасы 4ке коюлса мүмкүн (заманбап Go версияларында, ал жеткиликтүү ядролордун санынан көз каранды).
Мисал:
runtime.GOMAXPROCS(4) // жеткиликтүү жиптердин санын 4кө коюу
for i := 0; i < 4; i++ {
go func(id int) {
fmt.Printf("Goroutine %d ишке киргизилди\n", id)
// иш
}(i)
}
Go планировчусу goroutine'лерди ар башка ядролордо иштей турган жиптерге бөлөт, бул көп ядролуу системдердин эффективдүү колдонулушун камсыздайт. Бирок, так бөлүштүрүү системдин жүктөмүнө жана ички планировчуга көз каранды.