Sobes.tech
Junior — Middle

Ինչպե՞ս է տեղի ունենում հիշողության բաշխումը և կառավարումը Go լեզվում goroutines-ների օգտագործման ժամանակ։

sobes.tech AI

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

Go-ում, goroutine-ները՝ դա թեթև գծեր են, որոնք կառավարում է Go-ի ռանթայմը: Երբ ստեղծվում է goroutine, տրամադրվում է փոքր հիշողության պատյան (համարապես մոտ 2 ԿԲ), որը կարող է դինամիկորեն մեծանալ և փոքրանալ անհրաժեշտության դեպքում: Սա թույլ է տալիս արդյունավետ օգտագործել հիշողությունը, քանի որ պատյան չի լինի ֆիքսված և հարմարեցվում է բեռին:

Հիշողության կառավարումը կատարվում է Go-ի պլանավորողի միջոցով, որը բաժանում է goroutine-ները համակարգային գծերի վրա: Goroutine-ի պատյան գտնվում է heap-ում, իսկ garbage collector-ը ավտոմատ կերպով ազատում է օգտագործված չլինող հիշողությունը:

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

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

func main() {
    go sayHello() // սկսում է goroutine-ը
    time.Sleep(time.Second) // սպասում է, որպեսզի goroutine-ն ավարտվի
}

Այսպիսով, Go-ն թաքցնում է ծրագրավորողից goroutine-ների հիշողության կառավարման մանրամասները, ապահովելով պարզություն և արդյունավետություն հորիզոնական կատարման մեջ։