Sobes.tech
Middle+

Ի՞նչ են գորուտինները և ինչպես են կառուցված ներսից։

sobes.tech AI

Պատասխան AI-ից

Goroutine-ները Go լեզվում թեթև կատարման թելեր են, որոնք կառավարում է լեզվի ռնտամը, ոչ թե օպերացիոն համակարգը։ Բացառությամբ համակարգային թելերից, goroutine-ները ունեն շատ փոքր ստեկ (սկսվում են մի քանի կիլոբայթից) և կարող են դինամիկ ընդլայնվել:

Goroutine-ների ներսում այն ներկայացված է g կառուցվածքով, որը պարունակում է վիճակ, ստեկ, գրանցիչներ և այլ տեղեկություններ։ Go-ի ծրագրավորողը (scheduler) կառավարում է goroutine-ների փոխարկումը M:N մոդելով, որտեղ M-ն համակարգային թելեր (OS թելեր), իսկ N-ն goroutine-ներ են։

Ծրագրավորողը բաժանում է goroutine-ները համակարգային թելերի միջև, ինչը թույլ է տալիս արդյունավետ օգտագործել բազմամշակողությունը առանց ավելորդ ծախսերի OS թելերի ստեղծման և փոխարկման համար։ Սա հասնում է համագործակցային և կանխամտածված բազմակողմանիության միջոցով՝ ռնտամի ներսում:

Goroutine ստեղծելու օրինակ՝

func sayHello() {
    fmt.Println("Բարև goroutine-ից")
}

func main() {
    go sayHello() // goroutine-ի մեկնարկ
    time.Sleep(time.Second) // ժամանակ տալ goroutine-ին գործելու համար
}