Sobes.tech
Junior — Middle

V ktorých prípadoch sú úlohy v goroutines umiestnené do spoločného radu plánovača výkonu?

sobes.tech AI

Odpoveď od AI

V Go-u, zadania (goroutine-ji) se postavljaju u opštu red planera za izvršenje (run queue) u sledećim slučajevima:

  • Kada se goroutine kreira pomoću go i spremna je za izvršenje, ona se stavlja u red planera.
  • Ako se goroutine blokira (npr. na operacijama ulaza-izlaza, kanalima ili sinhronizaciji) i zatim odblokira, vraća se u red.
  • Kada se trenutna goroutine završi, planer bira sledeću iz reda.

Planer Go koristi model M:N, gde su M sistemski niti, a N goroutine-ji. Postoji mnogo goroutine-ja, koji se raspoređuju po nitima putem redova. Red planera je struktura u kojoj se čuvaju spremne za izvršenje goroutine-ji.

Primer:

func main() {
    go func() {
        fmt.Println("Goroutine pokrenuta")
    }()
    time.Sleep(time.Second) // Čekamo da goroutine izvrši
}

Ovde, nakon kreiranja, goroutine se postavlja u red planera za izvršenje.