Արդյոք բոլոր գորուտինները պետք է սկսվեն միաժամանակ և միաժամանակյա կերպով ըստ նախնական կարգավորման?
sobes.tech AI
Պատասխան AI-ից
Ոչ, բոլոր goroutine-ները պարտադիր չէ, որ նույն ժամանակ և միաժամանակ սկսվեն ըստ նախնական կարգավորման: Goroutine-ները թեթև գծեր են, որոնք պլանավորում է Go-ի պլանավորիչը:
Երբ դուք սկսում եք մի քանի goroutine, դրանք կարող են կատարվել հերթական կամ միաժամանակ, կախված հասանելի համակարգային գծերի (GOMAXPROCS) և ընթացիկ բեռի։
Նախնական կարգավորումը, եթե GOMAXPROCS-ը հավասար է 1-ին, goroutine-ները կկատարվեն մրցակցային, բայց ոչ միաժամանակ — այսինքն, նրանց միջև անցումը տեղի է ունենում պլանավորողի մակարդակում, բայց միայն մեկը կատարվում է միաժամանակ։
Իրական միաժամանակության հասնելու համար անհրաժեշտ է բարձրացնել GOMAXPROCS-ը (հաճախ հավասար է պրոցեսորի միջուկների թվին): Այդ դեպքում մի քանի goroutine-ներ կարող են կատարվել միաժամանակ տարբեր միջուկների վրա։