Junior — Middle
Hansı hallarda goroutine-lərdəki tapşırıqlar icra planlayıcısının ümumi növbəsinə yerləşdirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da vəzifələr (goroutinlər) aşağıdakı hallarda ümumi icra planlayıcısının növbəsinə (run queue) yerləşdirilir:
goistifadə edilərək yaradılan və icraya hazır olan goroutin, planlayıcının növbəsinə qoyulur.- Əgər goroutin bloklanıbsa (məsələn, giriş-çıxış əməliyyatlarında, kanallarda və ya sinxronizasiya zamanı) və sonra blokdan çıxarılırsa, o, yenidən növbəyə qayıdır.
- Mövcud goroutin tamamlandıqda, planlayıcı növbədən növbəti goroutin-i seçir.
Go planlayıcısı M:N modelini istifadə edir, burada M sistem axınları, N isə goroutinlərdir. Çox sayda goroutin mövcuddur və onlar növbələr vasitəsilə axınlara paylanır. Planlayıcının növbəsi, icraya hazır goroutinləri saxlayan bir strukturdur.
Nümunə:
func main() {
go func() {
fmt.Println("Goroutin başladıldı")
}()
time.Sleep(time.Second) // Goroutin-in icra olunması üçün gözləyirik
}
Burada, yaradıldıqdan sonra, goroutin icra üçün planlayıcının növbəsinə yerləşdirilir.