Middle+
Ինչպես են կառուցված գորուտիները և որքան հիշողություն են զբաղեցնում ստեկում?
sobes.tech AI
Պատասխան AI-ից
Goroutine-ը՝ դա թեթև քաշով կատարման հոսք է, որը կառավարում է Go-ի (runtime) կատարման միջավայրը։ Դրանք մուլտիպլեքսվում են ավելի փոքր համակարգային հոսքերի (թելերի պուլ) վրա։
Հիմնական բաղադրիչները՝
- Stack՝ Յուրաքանչյուր goroutine ունի առանձին, ընդլայնվող stack։ Սկզբում փոքր է (16KB Go 1.4+-ով, նախորդում 8KB), կարող է ավելացվել կամ նվազեցվել անհրաժեշտության դեպքում։
- Go ծրագրավորող՝ Իրականացնում է M:N մոդելը (M goroutines N համակարգային հոսքերի վրա)։ Պատասխանատու է goroutines-ների փոխարկման համար հասանելի համակարգային հոսքերի վրա։ Փոխարկումը տեղի է ունենում բլոկավորող գործողությունների ժամանակ (մտած/արտած, սպասում ալիքի վրա) կամ բացահայտ
runtime.Gosched()-ի կանչով։ - Կոնտեքստ՝ պարունակում է մեքենայական կոդի ցուցիչը, stack-ի ցուցիչը և այլ մետա-տեղեկատվություն, որոնք անհրաժեշտ են ծրագրավորողին։
Go 1.4-ից սկսած, goroutine-ի սկզբնական stack-ի չափը 16KB է։ Այս չափը հաստատուն չէ և կարող է դինամիկ փոփոխվել։