Sobes.tech
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 funlda() = 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
}