Sobes.tech
Junior — Middle

V ktorých prípadoch môže byť úloha spustená v gorutine pridaná do globálnej fronty plánovača?

sobes.tech AI

Odpoveď od AI

У Go, задатак који се извршава у горутини може бити додат у глобалну реду планера у следећим случајевима:

  • Када се горутина креира помоћу go: При позиву go func() { ... }() креира се нова горутина и ставља у глобалну реду планера на извршење.

  • Ако је тренутни нит (M) заузет или пренапрегнут: Планер може преместити горутину у глобалну реду да расподели оптерећење између нитова.

  • Приликом блокирања горутине: Ако горутина чека ресурс (нпр. канал или тајмер), може бити заустављена, а након откључавања додата у глобалну реду.

  • Када је локална реда планера празна: Планер може преузети задатке из глобалне реде да изједначи оптерећење.

Пример покретања горутине:

func main() {
    go func() {
        fmt.Println("Здраво из горутине")
    }()
    time.Sleep(time.Second) // да горутина има времена да се изврши
}

Овде се горутина одмах додаје у глобалну реду планера на извршење.