Sobes.tech
Junior — Middle

Előfordulhat, hogy egy szülő korutina befejeződik, mielőtt a benne indított gyermekkorutina?

sobes.tech MI

Válasz az MI-től

Kotlinban a szülő korutina befejeződhet korábban, mint a gyermek korutina, ha a gyermek korutina másik kontextusban vagy globális scope-ban indul.

Azonban, ha a gyermek korutina a szülő kontextusában indul (például launch segítségével a szülő CoroutineScope-jában), akkor a szülő korutina várni fog a gyermek korutinák befejezésére, és később vagy egyidejűleg fejeződik be velük.

Példa:

runBlocking {
    val job = launch {
        launch {
            delay(1000)
            println("Gyermek korutina befejeződött")
        }
        println("Szülő korutina befejeződött")
    }
    job.join()
}

Ebben a példában a szülő korutina nem fejeződik be, amíg a gyermek korutinok nem fejeződnek be.

Ha viszont a gyermek korutina a GlobalScope-ban indul, akkor a szülő korutina korábban befejeződhet.