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 аткаруу үчүн планалачынын кезегине коюлат.