Sobes.tech
Junior — Middle

¿Puede una coroutine principal terminar antes que una coroutine hija que se ejecuta dentro de ella?

sobes.tech AI

Respuesta de la IA

En Kotlin, la coroutine padre puede finalizar antes que la hija si la coroutine hija se inicia en otro contexto o en el ámbito global.

Sin embargo, si la coroutine hija se inicia en el contexto de la padre (por ejemplo, mediante launch en un CoroutineScope de la padre), entonces la coroutine padre esperará a que las coroutines hijas terminen, y finalizará más tarde o al mismo tiempo que ellas.

Ejemplo:

runBlocking {
    val job = launch {
        launch {
            delay(1000)
            println("Coroutine hija finalizada")
        }
        println("Coroutine padre finalizada")
    }
    job.join()
}

En este ejemplo, la coroutine padre no finalizará hasta que las hijas hayan terminado.

Si, en cambio, la coroutine hija se inicia en GlobalScope, la coroutine padre puede finalizar antes.