Əgər içində sonsuz döngü varsa, korutinlərin icrası hansı hissəsində baş verəcək?
sobes.tech Süni İntellekt
AI-dan cavab
Android-də (məsələn, Kotlin Coroutines istifadə edərək) içində sonsuz döngə olan korutina varsa, bu döngə korutina özü çağırıldıqda, yəni işləməyə başladıqda, yəni ilk resume çağırışında və ya launch və ya async vasitəsilə başladıqda icra olunacaq.
Korutina, dayandırıla bilən və yenidən başlana bilən bir funksiya kimi təsəvvür edilə bilər. Əgər korutinanın içində dayandırma nöqtəsi olmayan (suspend funksiyaları) sonsuz döngə varsa, korutina onu işlədən thread-i bloklayacaq və bu döngəni sonsuz şəkildə davam etdirəcək.
Bloklamanın qarşısını almaq üçün, korutinalardakı sonsuz döngələr adətən suspend funksiyalarına, məsələn, delay()-ə müraciət edir, bu da korutinanın dayandırılmasına və thread-in azad olunmasına imkan verir.
Dayandırma ilə sonsuz döngə nümunəsi:
launch {
while (true) {
// müəyyən iş
delay(1000) // korutinanı 1 saniyə dayandırır
}
}
Əgər delay və ya digər suspend çağırışlar yoxdursa, döngə korutina başladıqdan dərhal sonra sonsuz şəkildə işləyəcək və thread-i bloklayacaq.