Kotlin Coroutine okuyorum ve bunun suspendişleve dayalı olduğunu biliyorum . Ama ne anlama suspendgeliyor?
Coroutine veya fonksiyon askıya mı alındı?
Gönderen https://kotlinlang.org/docs/reference/coroutines.html
Temel olarak, eş değerler, bir iş parçacığını engellemeden askıya alınabilen hesaplamalardır
İnsanların sık sık "işlevi askıya al" dediklerini duydum. Ama bence görevin bitmesini beklediği için askıya alınan coroutine mi? "askıya alma" genellikle "işlemi durdur" anlamına gelir, bu durumda koroutin boştadır.
🤔 Koroutin askıya alındı mı demeliyiz?
Hangi korutin askıya alınır?
Gönderen https://kotlinlang.org/docs/reference/coroutines.html
Analojiye devam etmek için, await (), bir hesaplama yapılıncaya kadar bir eşdizimi askıya alan ve sonucunu döndüren bir askıya alma işlevi olabilir (bu nedenle bir eşzamansız {} bloğundan da çağrılabilir):
async { // Here I call it the outer async coroutine
...
// Here I call computation the inner coroutine
val result = computation.await()
...
}
🤔 "Bir hesaplama yapılana kadar bir koroutini askıya alır" diyor, ancak koroutin hafif bir iş parçacığı gibidir. Öyleyse, koroutin askıya alınırsa, hesaplama nasıl yapılabilir?
Biz bkz awaitüzerinde denir computationbu olabilir böylece, asynco döner Deferredbaşka eşyordam başlatabileceği konusunda araçlar,
fun computation(): Deferred<Boolean> {
return async {
true
}
}
🤔 Alıntı , bir koroutini askıya aldığını söylüyor . Bu ifadeyle suspenddış asynceşyordam veya suspendiç computationeşyordam?
Does suspendortalama o dış ederken asynceşyordam (bekliyor awaitiç için) computationbitirmek için eşyordamın, bu (dış asynceşyordam) iplik havuzuna Idles (dolayısıyla adı askıya) ve döner iplik ve ne zaman çocuk computationeşyordam bitirir, bu (dış asynceşyordam ) uyanır, havuzdan başka bir konu alır ve devam eder?
Konu başlığından bahsetmemin nedeni https://kotlinlang.org/docs/tutorials/coroutines-basic-jvm.html
İş parçacığı, koroutin beklerken havuza döndürülür ve bekleme tamamlandığında, koroutin havuzdaki boş bir iş parçacığı üzerinde devam eder.
