Sobes.tech
Junior — Middle

Ako je implementovaná asynchrónnosť pri používaní korutín?

sobes.tech AI

Odpoveď od AI

Asynchrónia v korutínach sa dosahuje pozastavením a pokračovaním vykonávania bez blokovania vlákien. Keď korutina narazí na operáciu, ktorá môže trvať čas (napríklad sieťový požiadavok), je pozastavená (suspend), čím uvoľní vlákno pre iné úlohy. Po dokončení operácie sa korutina obnoví zo toho istého miesta.

Toto je realizované mechanizmom funkcií suspend a kompilátora, ktorý korutiny premení na konečné automaty stavov. Takto môžu byť písané asynchrónne kódy v sekvenčnom štýle bez explicitných spätných volaní.

Príklad v Kotlin:

suspend fun fetchData(): String {
    delay(1000) // pozastaví korutinu na 1 sekundu bez blokovania vlákna
    return "Data loaded"
}

fun main() = runBlocking {
    val result = fetchData() // asynchrónne čaká na výsledok
    println(result)
}