¿Cuál es la diferencia entre runBlocking y coroutineScope en Kotlin Coroutines?
¡Hola, colegas! Empecé a estudiar coroutines en Kotlin y me encontré con dos funciones que me parecen muy similares: runBlocking y coroutineScope. Leí la documentación, pero para mí su comportamiento aún no es evidente.
Aquí hay un ejemplo que escribí:
fun main() = runBlocking {
launch {
delay(1000L)
println("World!")
}
println("Hello,")
}
Y otro:
fun main() = runBlocking {
coroutineScope {
launch {
delay(1000L)
println("World!")
}
println("Hello,")
}
}
Ambos ejemplos imprimen primero "Hello," y después de un segundo "World!". Pero sospecho que hay una diferencia, y es importante. ¿En qué consiste?
Concretamente me interesa:
- ¿Por qué
runBlockingbloquea el hilo actual, mientras quecoroutineScopeno? - ¿Cómo se comportan estas funciones en un