Sobes.tech
Senior

Горутина деген эмне? Ал кандай түзүлгөн?

sobes.tech AI

AIден жооп

Go тилинде goroutine — бул жеңил аткаруу агымы. Жүйө системалык агымдарынан айырмаланып, goroutine-лер Go runtime тарабынан башкарылат жана өтө кичинекей стекке ээ (башталганда бир нече килобайттан баштап, динамикалык өсүшү мүмкүн). Бул жүздөгөн миңдеген goroutine-лерди бир убакта иштетүүгө жана аз чыгымдар менен ишке ашырууга мүмкүндүк берет.

Goroutine түзүлүшү:

  • Goroutine түзүүдө (go оператору менен), Go планалагы аны даяр иштери кезегине коет.
  • Go runtime M:N планын колдонуп, M системалык агым (OS агымдары) N goroutine-лерди тейлейт.
  • Goroutine-лер runtime деңгээлинде которулат, бул системалык агымдарга караганда тезирек.
  • Ар бир агым (M) бир нече goroutine-лерди (N) иштетип, блоктоолордо же зарылчылыкка жараша алмашып турат.

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

func sayHello() {
    fmt.Println("Goroutine'ден салам")
}

func main() {
    go sayHello() // goroutine ишке киргизүү
    time.Sleep(time.Second) // goroutine ишке ашышы үчүн күтүү
}