Sobes.tech
Junior — Middle

Кайсы учурларда гурутиндердеги тапшырмалар аткаруу пландаштыруу кезегине коюлат?

sobes.tech AI

AIден жооп

Goда тапшырмалар (goroutine-лер) төмөндөгү учурларда аткаруу пландагы жалпы кезекке (run queue) жайгаштырылат:

  • go аркылуу түзүлгөн жана аткарууга даяр болгон goroutine, пландагы кезекке коюлат.
  • Эгер goroutine бөгөлсө (мисалы, киргизүү-чыгуу операцияларында, каналдарда же синхрондоштуруу учурунда) жана андан кийин бошотулса, ал кайра кезекке кайтарат.
  • Учурдагы goroutine аяктагандан кийин, пландагы планалачы кийинкисин кезектен тандоого алат.

Go планалачы M:N моделин колдонуп, анда M — системдик жиптер, N — goroutine-лер. Көптөгөн goroutine-лер бар, алар кезектер аркылуу жиптерге бөлүштүрүлөт. Планалачынын кезеги — аткарууга даяр goroutine-лер сакталган структура.

Мисал:

func main() {
    go func() {
        fmt.Println("Goroutine ишке киришти")
    }()
    time.Sleep(time.Second) // Goroutine ишке ашышын күтүп жатабыз
}

Бул жерде, түзүлгөндөн кийин, goroutine аткаруу үчүн планалачынын кезегине коюлат.