Sobes.tech
Junior — Middle

Cum este implementată asincronia atunci când se utilizează corutine?

sobes.tech AI

Răspuns de la AI

Asincronitatea în corutine se realizează prin suspendarea și reluarea execuției fără blocarea firelor. Când o corutină întâlnește o operație care poate dura timp (de exemplu, o solicitare de rețea), ea este suspendată (suspend), eliberând firul pentru alte sarcini. După finalizarea operației, corutina reia din același punct.

Aceasta este implementată prin mecanismul funcțiilor suspend și al compilatorului, care transformă corutinele în automate de stare finite. Astfel, corutinele permit scrierea de cod asincron într-un stil secvențial fără callback-uri explicite.

Exemplu în Kotlin:

suspend fun fetchData(): String {
    delay(1000) // suspendă corutina pentru 1 secundă fără a bloca firul
    return "Data loaded"
}

fun main() = runBlocking {
    val result = fetchData() // așteaptă asincron rezultatul
    println(result)
}