Ի՞նչ են գորուտինները և ինչպես են կառուցված ներսից։
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-ին գործելու համար
}