Sobes.tech
Senior

Kas ir gorutina? Kā tā atšķiras no sistēmas pavediena? Pastāsti par Go (GMP) plānotāju.

sobes.tech AI

Atbilde no AI

Goroutine ir viegls izpildes pavedienis Go valodā, ko pārvalda Go izpildlaiks, nevis operētājsistēma. Atšķirībā no sistēmas pavedieniem, goroutine ir daudz mazāka steka izmēra (sākot ar dažiem kilobaitiem un var dinamiski pieaugt), kas ļauj vienlaikus palaist tūkstošiem vai pat miljonus goroutine ar zemu resursu patēriņu.

Sistēmas pavedieni tiek izveidoti un plānoti operētājsistēmas, tiem ir fiksēts liels steks un dārgākas konteksta pārslēgšanas operācijas.

Go plānotājs balstās uz GMP modeli:

  • G (goroutine) — pati goroutine, izpildes vienība.
  • M (mašīna) — sistēmas pavediens (OS pavediens), uz kura darbojas goroutine.
  • P (procesors) — loģisks procesors, resurss, kas nepieciešams goroutine izpildei uz M.

P pārvalda gatavo goroutine (G) rindu. M var izpildīt tikai vienu goroutine vienlaikus, bet, pateicoties vairāku M un P esamībai, plānotājs efektīvi sadala goroutine starp sistēmas pavedieniem, nodrošinot konkurētspēju un paralēlismu.

Šī pieeja ļauj Go efektīvi izmantot sistēmas resursus un mērogoties daudzprocesoru sistēmās.