Sobes.tech
Junior — Middle

Cum detectează coroutineScope că corutinele sale au fost anulate?

sobes.tech AI

Răspuns de la AI

coroutineScope în corutinele Kotlin detectează anularea corutinelor sale copil prin mecanismul de anulare a contextului corutinei. Dacă una dintre corutinele din coroutineScope este anulată (de exemplu, din cauza unei excepții sau a unei anulări explicite), atunci întregul coroutineScope primește semnalul de anulare.

Acest lucru se întâmplă deoarece toate corutinele din coroutineScope moștenesc un CoroutineContext comun, care conține un Job. Când acest Job este anulat, toate corutinele copil sunt, de asemenea, anulate.

Astfel, coroutineScope monitorizează starea corutinelor sale copil prin contextul comun și răspunde la anularea lor, întrerupând execuția și aruncând o excepție CancellationException, dacă este necesar.

Exemplu:

suspend fun exemplu() = coroutineScope {
    val job = launch {
        // o muncă
        delay(1000)
    }
    delay(500)
    job.cancel() // anulăm corutina copil
    // coroutineScope va detecta anularea și se va întrerupe
}