Sobes.tech
Junior — Middle

Kuidas on rakendatud asünkroonsus korutinate kasutamisel?

sobes.tech AI

Vastus AI-lt

Asünkroonsus korutinates saavutatakse peatamise ja jätkamise teel ilma niitide blokeerimiseta. Kui korutin kohtab aega nõudvat operatsiooni (näiteks võrgupäringut), siis see peatub (suspend), vabastades niidi teiste ülesannete jaoks. Pärast operatsiooni lõpetamist jätkub korutin samast kohast.

See on teostatav suspend funktsioonide ja kompilaatori mehhanismi kaudu, mis muudab korutinid lõplikeks olekumasinateks. Seega võimaldavad korutinid kirjutada asünkroonset koodi järjestuslikus stiilis ilma selgete tagasikutsumisteta.

Näide Kotlinis:

suspend fun fetchData(): String {
    delay(1000) // peatab korutini 1 sekundiks, mitte blokeerides niiti
    return "Data loaded"
}

fun main() = runBlocking {
    val result = fetchData() // asünkroonselt ootab tulemust
    println(result)
}