Sobes.tech
Junior — Middle

Come viene implementata l'asincronia nell'uso delle coroutine?

sobes.tech AI

Risposta dell'AI

L'asincronia nelle coroutine si ottiene sospendendo e riprendendo l'esecuzione senza bloccare i thread. Quando una coroutine incontra un'operazione che può richiedere tempo (ad esempio, una richiesta di rete), viene sospesa (suspend), liberando il thread per altri compiti. Dopo il completamento dell'operazione, la coroutine riprende dallo stesso punto.

Questo è realizzato tramite il meccanismo delle funzioni suspend e il compilatore, che trasforma le coroutine in automi a stati finiti. Di conseguenza, le coroutine permettono di scrivere codice asincrono in stile sequenziale senza callback espliciti.

Esempio in Kotlin:

suspend fun fetchData(): String {
    delay(1000) // sospende la coroutine per 1 secondo senza bloccare il thread
    return "Data loaded"
}

fun main() = runBlocking {
    val result = fetchData() // aspetta asincronicamente il risultato
    println(result)
}