Sobes.tech
Senior

Յո՞ր է օպերացիոն համակարգում նոր թել ստեղծվում յուրաքանչյուր գորուտինայի համար։

sobes.tech AI

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

Ոչ, Go-ում յուրաքանչյուր goroutine-ի համար չի ստեղծվում առանձին օպերացիոն համակարգի թել: Goroutine-ը կարելի է դիտարկել որպես թեթև թել (lightweight thread), որը կառավարում է Go-ի ռանթայմը (runtime scheduler):

Go ռանթայմը օգտագործում է M:N մոդել, որտեղ M-ն օպերացիոն համակարգի թելերի թիվն է, իսկ N-ն goroutine-ների թիվը: Ռանթայմը շատ goroutine-ներ է բաշխում ավելի փոքր թվով օպերացիոն համակարգի թելերի վրա, արդյունավետ օգտագործելով համակարգի ռեսուրսները:

Այսպիսով, հազարավոր և նույնիսկ միլիոնավոր goroutine-ներ կարելի է ստեղծել առանց զգալի հավելյալ ծախսերի, ի տարբերություն համակարգի թելերի, որոնք ավելի ծանր են:

Այսպիսով, goroutine-ները համատեղ ծրագրավորված առաջադրանքներ են մեկ կամ մի քանի օպերացիոն համակարգի թելերի ներսում, և ոչ 1:1 համապատասխանություն։