Sobes.tech
Junior — Middle

Оё шумо метавонед шарҳ диҳед, ки механизмии нақшаи корҳоро дар системаи чӣ гуна амалишавӣ шудааст?

sobes.tech AI

Ҷавоб аз AI

Дар Go, планировщик (scheduler) иҷро мешавад ҳамчун қисми runtime ва масъул аст барои идоракунии goroutine-ҳо, ки сабукрави равандҳо мебошанд. Принципҳои асосӣ:

  • Баъзе системавии равандҳо (M) мавҷуданд, ки дар онҳо goroutine-ҳо (G) иҷро мешаванд.
  • Планировщик goroutine-ҳоро бо равандҳо тавассути объектҳои P (processor) пайваст мекунад, ки навбатҳоро барои goroutine-ҳо, ки омода барои иҷро ҳастанд, идора мекунанд.
  • Goroutine-ҳо дар навбат гузошта мешаванд, ва планировщик интихоби ояндаро барои иҷро мекунад.
  • Агар goroutine боздошта шавад (масалан, дар вуруд/баромад), планировщик ба дигар мегузарад.

Масалан барои эҷод ва оғоз кардани goroutine:

package main

import (
    "fmt"
    "time"
)

func task(id int) {
    fmt.Printf("Вазифа %d оғоз ёфт\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Вазифа %d анҷом ёфт\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go task(i) // оғоз кардани goroutine
    }
    time.Sleep(2 * time.Second) // интизорӣ барои анҷомёбӣ
}

Тавре ки мебинем, планировщики Go самаранок тақсим мекунад иҷрои бисёр goroutine-ҳоро дар шумораи маҳдуди равандҳои системавӣ, ки кафолат медиҳад рақобат ва параллелизм.