Sobes.tech
Senior

Ի՞նչ է գորուտինան: Ինչպե՞ս է այն տարբերվում համակարգային թելից: Պատմեք Go (GMP) պլանավորողի մասին։

sobes.tech AI

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

Goroutine-ը՝ դա Go լեզվի մեջ թեթև գործարկման հոսք է, որը կառավարում է Go-ի ռանթայմը, ոչ թե օպերացիոն համակարգը։ Բացառիկ տարբերությամբ համակարգային թելերից, goroutine-ները ունեն շատ փոքր ստեկի չափ, սկսում են մի քանի կիլոբայթից և կարող են դինամիկորեն մեծանալ, ինչը թույլ է տալիս միաժամանակ գործարկել հազարավոր կամ նույնիսկ միլիոնավոր goroutine-ներ ցածր ծախսերով։

Սիստեմային թելերը ստեղծվում և պլանավորվում են օպերացիոն համակարգի կողմից, ունեն ֆիքսված մեծ ստեկ և ավելի թանկ կոնտեքստի փոփոխման օպերացիաներ։

Go-ի պլանավորիչը հիմնված է GMP մոդելին՝

  • G (goroutine) — ինքնին goroutine, գործարկման միավոր։
  • M (մեքենա) — համակարգային թել (OS thread), որի վրա գործարկվում են goroutine-ները։
  • P (պրոցեսոր) — տրամաբանական պրոցեսոր, ռեսուրս, անհրաժեշտ է goroutine-ների գործարկման համար M-ում։

P կառավարում է պատրաստի goroutine-ների հերթը (G): M կարող է գործարկել միայն մեկ goroutine մեկ անգամ, բայց բազմաթիվ M և P առկայության դեպքում պլանավորիչը արդյունավետորեն բաշխում է goroutine-ները համակարգային թելերի միջև՝ ապահովելով մրցակցություն և համաժամանակություն։

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