Senior
Ի՞նչ է գորուտինան: Ինչպե՞ս է կառուցված։
sobes.tech AI
Պատասխան AI-ից
Go լեզվում goroutine-ը թեթև կատարման հոսք է: Բացառությամբ համակարգային հոսքերի, goroutine-ները կառավարում է Go-ի ռանթայմը և ունեն շատ փոքր ստեկ (սկիզբը մի քանի կիլոբայթ է և կարող է դինամիկորեն մեծանալ): Սա թույլ է տալիս միաժամանակ գործարկել հարյուր հազարավոր goroutine-ներ ցածր ծախսերով:
Goroutine-ի կառուցվածքը:
- Goroutine-ներ ստեղծելիս (
goօպերատորով), Go-ի պլանավորիչը դրանք տեղադրում է պատրաստի գործերի հերթում: - Go ռանթայմը օգտագործում է M:N պլանավորում՝ M համակարգային հոսքեր (OS threads) սպասարկում են N goroutine-ներ:
- Goroutine-ները փոխում են կոնտեքստը ռանթայմ մակարդակում, ինչը ավելի արագ է, քան համակարգային հոսքերի փոխումը:
- Ամեն մի հոսք (M) կարող է կատարել մի քանի goroutine-ներ (N), փոխելով ביניהם բլոկավորումների կամ անհրաժեշտության դեպքում:
Goroutine ստեղծելու օրինակ:
func sayHello() {
fmt.Println("Բարեւ goroutine-ից")
}
func main() {
go sayHello() // գործարկում ենք goroutine
time.Sleep(time.Second) // սպասում ենք, որպեսզի goroutine-ն հասցնի ավարտել
}