Sobes.tech
Junior — Middle

Ar gali vyresnioji korutina baigtis anksčiau nei viduje pradėta vaikų korutina?

sobes.tech AI

Atsakymas iš AI

Kotlin'e tėvinė korutina gali užbaigti anksčiau nei vaiko, jei vaiko korutina pradėta kitame kontekste arba globaliame scope'e.

Tačiau, jei vaiko korutina pradėta tėvo kontekste (pavyzdžiui, naudojant launch tėvo CoroutineScope), tada tėvo korutina lauks vaikų korutinų pabaigos ir užbaigs vėliau arba tuo pačiu metu su jais.

Pavyzdys:

runBlocking {
    val job = launch {
        launch {
            delay(1000)
            println("Vaiko korutina baigta")
        }
        println("Tėvo korutina baigta")
    }
    job.join()
}

Šiame pavyzdyje, tėvo korutina nebaigs, kol vaiko korutinos nebus pabaigtos.

Jei, kita vertus, vaiko korutina pradėta GlobalScope, tada tėvo korutina gali užbaigti anksčiau.