Junior — Middle
Kuidas tuvastab coroutineScope, et tema korutínid on tühistatud?
sobes.tech AI
Vastus AI-lt
coroutineScope in Kotlin korutinid tuvastab oma lastekorutinate tühistamise, kasutades korutina konteksti tühistamise mehhanismi. Kui üks coroutineScope sees olevatest korutinatest tühistatakse (näiteks erandi või otsese tühistamise tõttu), saab kogu coroutineScope signaali tühistamise.
See toimub seetõttu, et kõik coroutineScope sees olevad korutinaid pärivad ühise CoroutineContext, mis sisaldab Job-i. Kui see Job tühistatakse, tühistatakse ka kõik lastekorutinaid.
Nii jälgib coroutineScope oma lastekorutinate olekut läbi ühise konteksti ja reageerib nende tühistamisele, katkestades täitmise ja visates CancellationException-i, kui see on vajalik.
Näide:
suspend fun näide() = coroutineScope {
val job = launch {
// mingi töö
delay(1000)
}
delay(500)
job.cancel() // tühistame lapsekorutina
// coroutineScope tuvastab tühistamise ja katkestab
}