Sobes.tech
Senior

Kas yra gorutina? Kaip ji skiriasi nuo sistemos gijos? Papasakok apie Go (GMP) planuotoją.

sobes.tech AI

Atsakymas iš AI

Goroutine yra lengvas vykdymo srautas Go kalboje, kurį valdo Go vykdymo laikas, o ne operacinė sistema. Skirtingai nuo sisteminio siūlo, goroutine turi daug mažesnį steko dydį (pradedant keliomis kilobaitais ir galint dinamiškai augti), leidžiantį vienu metu paleisti tūkstančius ar net milijonus goroutine su mažais išlaidomis.

Sisteminiai siūlai yra kuriami ir planuojami operacinės sistemos, turi fiksuotą didelį steką ir brangesnes konteksto keitimo operacijas.

Go planuotojas remiasi GMP modeliu:

  • G (goroutine) — pati goroutine, vykdymo vienetas.
  • M (mašina) — sisteminis siūlas (OS siūlas), kuriame vykdomos goroutine.
  • P (procesorius) — loginis procesorius, išteklius, reikalingas goroutine vykdymui M.

P valdo paruoštų goroutine (G) eilę. M gali vykdyti tik vieną goroutine vienu metu, tačiau dėl kelių M ir P buvimo planuotojas efektyviai paskirsto goroutine tarp sisteminių siūlų, užtikrindamas konkurenciją ir paralelizmą.

Šis požiūris leidžia Go efektyviai naudoti sisteminius išteklius ir skalę daugiaprocesoriuose sistemose.