Sobes.tech
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 pozivu go 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.