Junior — Middle
Kako coroutineScope otkriva da su njegove korutine otkazane?
sobes.tech АИ
Одговор од АИ
coroutineScope u Kotlin korutinama detektuje otkazivanje svojih dečjih korutina putem mehanizma otkazivanja konteksta korutine. Ako se jedna od korutina unutar coroutineScope otkaže (npr. zbog izuzetka ili eksplicitnog otkazivanja), cela coroutineScope prima signal otkazivanja.
To se dešava zato što sve korutine unutar coroutineScope nasledjuju zajednički CoroutineContext, koji sadrži Job. Kada se taj Job otkaže, sve dečje korutine se takođe otkazuju.
Na ovaj način, coroutineScope prati stanje svojih dečjih korutina putem zajedničkog konteksta i reaguje na njihovo otkazivanje, prekidajući izvršenje i bacajući izuzetak CancellationException, ako je to potrebno.
Primer:
suspend fun primer() = coroutineScope {
val job = launch {
// neki posao
delay(1000)
}
delay(500)
job.cancel() // otkazujemo dečju korutinu
// coroutineScope će detektovati otkazivanje i prekinuti se
}