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)
}