Junior — Middle
Дар кадом ҳолатҳо вазифаҳо дар гуруҳҳои goroutine ба навбати умумии нақшакашии иҷроиш дохил мешаванд?
sobes.tech AI
Ҷавоб аз AI
Дар Go вазифаҳо (goroutine-ҳо) дар ҳолатҳои зерин ба навбатии умумии нақшакаш (run queue) ҷойгир мешаванд:
- Вақте, ки goroutine бо истифода аз
goэҷод мешавад ва омодаи иҷро аст, он ба навбатии нақшакаш гузошта мешавад. - Агар goroutine монеъ шавад (масалан, дар амалиётҳои воридот-баромад, каналҳо ё ҳамоҳангсозӣ) ва сипас боз шавад, он ба навбат бармегардад.
- Вақте, ки goroutine-и ҳозира тамом мешавад, нақшакаш навбатии ояндаро интихоб мекунад.
Нақшакашии Go модели M:N-ро истифода мебарад, ки дар он M — сӯрохиҳои системӣ, N — goroutine-ҳо мебошанд. Бисёре аз goroutine-ҳо мавҷуданд, ки тавассути навбатҳо ба сӯрохиҳо тақсим мешаванд. Навбатии нақшакаш як сохтор аст, ки дар он goroutine-ҳо барои иҷро омода нигоҳ дошта мешаванд.
Масалан:
func main() {
go func() {
fmt.Println("Goroutine оғоз шуд")
}()
time.Sleep(time.Second) // Мутталоем, ки goroutine иҷро шавад
}
Ин ҷо, пас аз эҷод, goroutine ба навбатии нақшакаш барои иҷро ҷойгир мешавад.