Junior — Middle
Hogyan észleli a coroutineScope, hogy a korutinjai törölve lettek?
sobes.tech MI
Válasz az MI-től
A coroutineScope a Kotlin korutinokban felismeri gyermek korutinjainak törlését a korutin kontextusának törlési mechanizmusán keresztül. Ha az egyik coroutineScope-on belüli korutin törlésre kerül (például kivétel vagy explict törlés miatt), akkor az egész coroutineScope kap egy törlési jelet.
Ez azért történik, mert minden coroutineScope-on belüli korutin örökli a közös CoroutineContext-et, amely tartalmaz egy Job-ot. Amikor ez a Job törlésre kerül, minden gyermek korutin is törlésre kerül.
Így a coroutineScope figyeli a gyermek korutinok állapotát a közös kontextuson keresztül, és reagál azok törlésére, megszakítva a végrehajtást és kiváltva egy CancellationException-t, ha szükséges.
Példa:
suspend fun példa() = coroutineScope {
val job = launch {
// valami munka
delay(1000)
}
delay(500)
job.cancel() // gyermek korutin törlése
// a coroutineScope észleli a törlést és megszakad
}