Sobes.tech
Junior — Middle

Go тилиндеги тапшырмалардын пландаштыруу механизми кандай иштээрин жана ал системалык агымдар менен кандай өз ара аракеттенерин түшүндүрө аласызбы?

sobes.tech AI

AIден жооп

Go тилинде пландаштыруу (scheduler) жумуштарды башкарууга жооптуу — бул жеңил иштөө агымдары (goroutine), алар операциялык тутумдун (OS thread) ичинде ишке ашырылат.

Go M:N моделин колдонуп, M — системалык агымдардын саны, N — goroutine-дардын саны. Планировщик goroutine-дарды жеткиликтүү системалык агымдарга бөлүштүрөт жана алардын ортосунда CPU эффективдүү колдонуу үчүн алмаштырып турат.

Планировщиктин негизги компоненттери:

  • G (goroutine) — goroutineти көрсөтүүчү структура.
  • M (машина) — системалык агым, анда goroutine-дар ишке ашырылат.
  • P (процессор) — логикалык процессор, G жана M менен байланышып, иштетүүнү башкаруу.

Иш принципи:

  1. Goroutine (G) Pге берилет.
  2. P M менен байланышат (системалык агым).
  3. M goroutineти иштетет.
  4. Планировщик goroutine-дар арасында алмаштырып турат, бирөө блоктолгондо (мисалы, кирүү/чыгуудө) же убакыт кванттары аяктагында.

Бул Go программасына системалык ресурстарды эффективдүү колдонууга жана жогорку атаандаштыкка жетишүүгө мүмкүндүк берет, оор системалык агымдарды түзбөстөн.

Goroutine түзүү мисалы:

func main() {
    go func() {
        fmt.Println("Goroutineден салам")
    }()
    fmt.Println("Mainтен салам")
    time.Sleep(time.Second) // Goroutine ишке ашуусун күтөт
}