Sobes.tech
Junior — Middle

Poate o corutină părinte să se termine înaintea corutinei fiice, inițiată în interiorul acesteia?

sobes.tech AI

Răspuns de la AI

În Kotlin, corutina părinte poate să se încheie înaintea celei copil dacă corutina copil este lansată într-un alt context sau în scope-ul global.

Cu toate acestea, dacă corutina copil este lansată în contextul părintelui (de exemplu, prin launch într-un CoroutineScope al părintelui), atunci corutina părinte va aștepta finalizarea corutinelor copil și se va încheia mai târziu sau simultan cu acestea.

Exemplu:

runBlocking {
    val job = launch {
        launch {
            delay(1000)
            println("Corutina copil finalizată")
        }
        println("Corutina părinte finalizată")
    }
    job.join()
}

În acest exemplu, corutina părinte nu se va încheia până când corutinele copil nu vor fi terminate.

Dacă, în schimb, corutina copil este lansată în GlobalScope, atunci corutina părinte poate să se încheie mai devreme.