Sobes.tech
Junior — Middle

Go тилинде тапшырмаларды параллель жана үзгүлтсіз иштетүү кандай ишке ашырылат?

sobes.tech AI

AIден жооп

Go тилинде тапшырмаларды параллелдүү иштетүү goroutine'лер аркылуу ишке ашырылат — бул жеңил жиптер, алар go ачкыч сөзү менен ишке киргизилет. Goroutine функцияны асинхрондуу түрдө иштетүү үчүн ишке киргизсе болот, жана ал башка goroutine'лер менен бирге параллелдүү иштейт.

Тизмектүү иштетүү — бул go колдонбостон функцияларды чакыруу, анда тапшырмалар бири-экиден аткарылат.

Параллелдүү иштетүүнүн мисалы:

package main

import (
    "fmt"
    "time"
)

func тапшырма(ид int) {
    fmt.Printf("Тапшырма %d башталды\n", ид)
    time.Sleep(time.Second)
    fmt.Printf("Тапшырма %d аяктады\n", ид)
}

func main() {
    for i := 1; i <= 3; i++ {
        go тапшырма(i) // goroutine'ду ишке киргизүү
    }
    time.Sleep(2 * time.Second) // goroutine'дердин аякташын күтүү
}

Бул мисалда үч тапшырма параллелдүү башталат. Эгер go алып салынса, тапшырмалар кезек-кезеги менен аткарылат.

Goroutine'дерди синхрондоштуруу жана башкаруу үчүн көбүнчө каналдар (channels) жана sync.WaitGroup колдонулат.