ما الفرق بين 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!". لكني أشك في وجود فرق، وأنه فرق مهم. ما هو هذا الفرق؟