Sobes.tech
Junior — Middle

Une coroutine parent peut-elle se terminer avant sa coroutine enfant lancée à l'intérieur ?

sobes.tech IA

Réponse de l'IA

En Kotlin, la coroutine parente peut se terminer avant la coroutine enfant si cette dernière est lancée dans un autre contexte ou dans le scope global.

Cependant, si la coroutine enfant est lancée dans le contexte de la parente (par exemple, via launch dans un CoroutineScope de la parente), alors la coroutine parente attendra la fin des coroutines enfants, et se terminera plus tard ou en même temps qu'elles.

Exemple:

runBlocking {
    val job = launch {
        launch {
            delay(1000)
            println("Coroutine enfant terminée")
        }
        println("Coroutine parente terminée")
    }
    job.join()
}

Dans cet exemple, la coroutine parente ne se terminera pas tant que les coroutines enfants ne sont pas terminées.

Si, en revanche, la coroutine enfant est lancée dans GlobalScope, la coroutine parente peut se terminer plus tôt.