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) // да горутина има времена да се изврши
}
Овде се горутина одмах додаје у глобалну реду планера на извршење.