Junior — Middle
Qachonki goroutine ichidagi vazifalar bajarish rejalashtiruvchisining umumiy navbatiga joylashtiriladi?
sobes.tech AI
AIdan javob
Go tilida vazifalar (goroutinlar) quyidagi hollarda bajarish rejalashtiruvchisining umumiy navbatiga (run queue) joylashtiriladi:
goyordamida yaratilgan va bajarishga tayyor bo'lgan goroutin, rejalashtiruvchining navbatiga qo'yiladi.- Agar goroutin bloklanib qolsa (masalan, kirish-chiqish operatsiyalari, kanallar yoki sinxronizatsiya paytida) va keyin blokdan chiqarilsa, u qaytib navbatga qo'shiladi.
- Joriy goroutin tugagach, rejalashtiruvchi navbatdan keyingisini tanlaydi.
Go rejalashtiruvchisi M:N modelini ishlatadi, bu yerda M — tizim oqimlari, N — goroutinlar. Ko'p goroutinlar mavjud bo'lib, ular navbatlar orqali oqimlarga tarqatiladi. Rejalashtiruvchining navbati, bajarishga tayyor goroutinlarni saqlovchi tuzilma.
Misol:
func main() {
go func() {
fmt.Println("Goroutin ishga tushirildi")
}()
time.Sleep(time.Second) // Goroutinning bajarilishini kutamiz
}
Bu yerda, goroutin yaratilgandan so'ng, bajarish uchun rejalashtiruvchining navbatiga joylashtiriladi.