Sobes.tech
Junior — Middle

Дар кадом ҳолатҳо вазифае, ки дар goroutine оғоз шудааст, метавонад ба навбати глобалии нақшакаш илова карда шавад?

sobes.tech AI

Ҷавоб аз AI

Go-да, горутинада ишке асырылган вазифа түбәндәге очракларда гомуми планировщик чиратасына өстәлә ала:

  • go белән ясалганда: go func() { ... }() чакырганда, яңа горутина ясала һәм үтәү өчен гомуми планировщик чиратасына урнаша.

  • Әгәр хәзерге агым (M) мәшгуль яки артык йөкләнгән булса: Планировщик горутинаны гомуми чиратка күчерә ала, йөкне агымнар арасында бүлү өчен.

  • Горутин блокланган вакытта: Әгәр горутина ресурс көтә (мәсәлән, канал яки таймер), ул туктатылырга мөмкин һәм блоктан чыгарыла алгач, гомуми чиратка өстәлә.

  • Локаль планировщик чиратасы буш булганда: Планировщик гомуми чираттан бурычлар ала, йөкне баланслау өчен.

Горутина башлау үрнәге:

func main() {
    go func() {
        fmt.Println("Горутинадан сәлам")
    }()
    time.Sleep(time.Second) // горутинаның үтәлүенә вакыт бирү өчен
}

Монда, горутина шунда ук гомуми планировщик чиратасына өстәлә һәм үтәлә.