Sobes.tech
Junior — Middle

Kako će završetak podređene korutine uticati na roditeljski scope u asinhronim operacijama?

sobes.tech АИ

Одговор од АИ

U Kotlin Coroutines, deteta korutina nasleđuje kontekst roditeljske korutine, uključujući njen scope. Ako deteta korutina završi sa greškom, ta greška se podrazumevano propagira na viši nivo i otkazuje scope roditelja zajedno sa svim njegovim detetovim korutinama. Ovo obezbeđuje strukturiranu konkurenciju i sprečava curenje resursa.

Ako deteta korutina završi uspešno, to uopšte ne utiče na scope roditelja — on nastavlja da radi.

Primer:

val parentJob = CoroutineScope(Dispatchers.Default).launch {
    val child = launch {
        throw Exception("Greška u detetovoj korutini")
    }
    child.join()
}

// parentJob će takođe biti otkazan zbog greške u child

Da biste izbegli otkazivanje roditelja usled grešaka u detetovim korutinama, možete koristiti SupervisorJob, koji izoluje greške detetovih korutina.