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
goi 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.