Sobes.tech
Junior — Middle

Kako se vrši raspodela gorutina po nitima izvršenja?

sobes.tech АИ

Одговор од АИ

U Go-u, raspodela gorutina na niti za izvršavanje (OS niti) vrši se pomoću planera ugrađenog u runtime. Gorutina je lagana korutina koja ne odgovara direktno jednom OS niti.

Planer Go koristi model M:N, gde je M broj OS niti, a N broj gorutina. Dinamički dodeljuje gorutine nitima kako bi efikasno koristio dostupne sistemske resurse.

Glavne komponente:

  • G (gorutina) — sama gorutina.
  • M (mašina) — OS nit.
  • P (procesor) — logički procesor koji upravlja izvršavanjem gorutina.

Proces:

  1. P se dodeljuje gorutini.
  2. P se povezuje sa M (OS nitom).
  3. M izvršava gorutinu.

Ako gorutina blokira (npr. u sistemskom pozivu), planer može prebaciti izvršavanje na drugu gorutinu u drugoj niti, da bi se izbegla neaktivnost.

Na ovaj način, raspodela gorutina po nitima se vrši automatski i transparentno za programera, obezbeđujući visoku konkurentnost i skalabilnost.

Primer kreiranja gorutine:

 go func() {
    fmt.Println("Zdravo iz gorutine")
}()

Ovde će planer odlučiti na kojoj OS niti će se izvršiti ova gorutina.