Sobes.tech
Junior — Middle

Comment la asynchronie est-elle réalisée lors de l'utilisation de coroutines?

sobes.tech IA

Réponse de l'IA

L'asynchronie dans les coroutines est réalisée en suspendant et en reprenant l'exécution sans bloquer les threads. Lorsqu'une coroutine rencontre une opération pouvant prendre du temps (par exemple, une requête réseau), elle est suspendue (suspend), libérant le thread pour d'autres tâches. Après la fin de l'opération, la coroutine reprend du même endroit.

Cela est implémenté via le mécanisme des fonctions suspend et le compilateur, qui transforme les coroutines en automates finis. Ainsi, les coroutines permettent d'écrire du code asynchrone de manière séquentielle sans callbacks explicites.

Exemple en Kotlin :

suspend fun fetchData(): String {
    delay(1000) // suspend la coroutine pendant 1 seconde sans bloquer le thread
    return "Data loaded"
}

fun main() = runBlocking {
    val result = fetchData() // attend le résultat de façon asynchrone
    println(result)
}