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.