Avatar ·

ما الفرق بين runBlocking و coroutineScope في Kotlin Coroutines؟

مرحباً أيها الزملاء! بدأت تعلم coroutines في Kotlin ووجدت دالتين تبدوان متشابهتين جداً بالنسبة لي: runBlocking و coroutineScope. لقد قرأت الوثائق، لكن سلوكهما لا يزال غير واضح بالنسبة لي.

إليك مثال كتبته:

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

ومثال آخر:

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

كلا المثالين يطبعان أولاً "Hello," وبعد ثانية "World!". لكني أشك في وجود فرق، وأنه فرق مهم. ما هو هذا الفرق؟