Sobes.tech
Junior — Middle

Արդյոք բոլոր գորուտինները պետք է սկսվեն միաժամանակ և միաժամանակյա կերպով ըստ նախնական կարգավորման?

sobes.tech AI

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

Ոչ, բոլոր goroutine-ները պարտադիր չէ, որ նույն ժամանակ և միաժամանակ սկսվեն ըստ նախնական կարգավորման: Goroutine-ները թեթև գծեր են, որոնք պլանավորում է Go-ի պլանավորիչը:

Երբ դուք սկսում եք մի քանի goroutine, դրանք կարող են կատարվել հերթական կամ միաժամանակ, կախված հասանելի համակարգային գծերի (GOMAXPROCS) և ընթացիկ բեռի։

Նախնական կարգավորումը, եթե GOMAXPROCS-ը հավասար է 1-ին, goroutine-ները կկատարվեն մրցակցային, բայց ոչ միաժամանակ — այսինքն, նրանց միջև անցումը տեղի է ունենում պլանավորողի մակարդակում, բայց միայն մեկը կատարվում է միաժամանակ։

Իրական միաժամանակության հասնելու համար անհրաժեշտ է բարձրացնել GOMAXPROCS-ը (հաճախ հավասար է պրոցեսորի միջուկների թվին): Այդ դեպքում մի քանի goroutine-ներ կարող են կատարվել միաժամանակ տարբեր միջուկների վրա։