Sobes.tech
Junior — Middle

Hogyan valósul meg az aszinkronitás a korutinok használatakor?

sobes.tech MI

Válasz az MI-től

A korutinok aszinkronitása a végrehajtás szüneteltetésével és újraindításával érhető el anélkül, hogy a szálakat blokkolná. Amikor egy korutin olyan művelettel találkozik, amely időt vehet igénybe (például hálózati kérés), akkor szünetel (suspend), és felszabadítja a szálat más feladatokra. A művelet befejezése után a korutin ugyanonnan folytatódik.

Ez a suspend funkciók és a fordító mechanizmusa révén valósul meg, amely a korutinokat állapotgépekké alakítja. Ennek eredményeként a korutinok lehetővé teszik az aszinkron kód írását szekvenciális stílusban, explict visszahívások nélkül.

Példa Kotlinban:

suspend fun fetchData(): String {
    delay(1000) // 1 másodpercre szünetelteti a korutint anélkül, hogy blokkolná a szálat
    return "Data loaded"
}

fun main() = runBlocking {
    val result = fetchData() // aszinkron módon várja az eredményt
    println(result)
}