Avatar ·

Quelle est la différence entre runBlocking et coroutineScope dans Kotlin Coroutines ?

Bonjour, collègues ! J'ai commencé à étudier les coroutines en Kotlin et je suis tombé sur deux fonctions qui me semblent très similaires : runBlocking et coroutineScope. J'ai lu la documentation, mais leur comportement n'est toujours pas clair pour moi.

Voici un exemple que j'ai écrit :

fun main() = runBlocking {
    launch {
        delay(1000L)
        println("World!")
    }
    println("Hello,")
}

Et un autre :

fun main() = runBlocking {
    coroutineScope {
        launch {
            delay(1000L)
            println("World!")
        }
        println("Hello,")
    }
}

Les deux exemples affichent d'abord "Hello,", puis une seconde plus tard "World!". Mais je soupçonne qu'il y a une différence, et qu'elle est importante. En quoi consiste-t-elle ?