Junior — Middle
U kojim slučajevima zadatak pokrenut u gorutini može biti dodat u globalnu red planera?
sobes.tech АИ
Одговор од АИ
U Go, zadatak koji se izvršava u gorutini može biti dodat u globalnu red planera u sledećim slučajevima:
-
Kada se gorutina kreira pomoću
go: Pri pozivugo func() { ... }()kreira se nova gorutina i stavlja u globalnu red planera na izvršenje. -
Ako je trenutni nit (M) zauzet ili preopterećen: Planer može premestiti gorutinu u globalnu red da rasporedi opterećenje između niti.
-
Prilikom blokiranja gorutine: Ako gorutina čeka resurs (npr. kanal ili tajmer), može biti zaustavljena, a nakon odblokiranja dodata u globalnu red.
-
Kada je lokalna red planera prazna: Planer može preuzeti zadatke iz globalne reda da uravnoteži opterećenje.
Primer pokretanja gorutine:
func main() {
go func() {
fmt.Println("Zdravo iz gorutine")
}()
time.Sleep(time.Second) // da gorutina ima vremena da se izvrši
}
Ovde se gorutina odmah dodaje u globalnu red planera na izvršenje.