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