Sobes.tech
Junior — Middle

Uma coroutine pai pode terminar a sua execução antes da coroutine filha, iniciada dentro dela?

sobes.tech IA

Resposta da IA

No Kotlin, a coroutine pai pode terminar antes da filha se a filha for iniciada em outro contexto ou no escopo global.

No entanto, se a coroutine filha for iniciada no contexto da pai (por exemplo, através de launch em um CoroutineScope da pai), então a coroutine pai aguardará a conclusão das coroutines filhas, e terminará mais tarde ou ao mesmo tempo que elas.

Exemplo:

runBlocking {
    val job = launch {
        launch {
            delay(1000)
            println("Coroutine filha terminada")
        }
        println("Coroutine pai terminada")
    }
    job.join()
}

Neste exemplo, a coroutine pai não terminará até que as filhas tenham terminado.

Se, por outro lado, a coroutine filha for iniciada em GlobalScope, a coroutine pai pode terminar antes.