【发布时间】:2019-07-27 09:21:49
【问题描述】:
我很难理解协程。这是一个非常简单的设置。 longComputation 和 delay 都是挂起函数。第一个阻塞主线程,后者不阻塞。为什么?
CoroutineScope(Dispatchers.Main).launch {
val result = longComputation() // Blocks
delay(10_000) // Doesn't block
}
【问题讨论】:
-
您是否尝试过在不同的线程上下文(例如
withContext(IO))上运行任务? -
是的,这行得通。我想我必须回到基础。
delay是否也在内部切换调度程序?不能说我看懂了delay的源码 -
No delay不需要另一个dispatcher,因为它是一个真正的挂起函数,不会在任何时候阻塞线程
标签: kotlin kotlin-android-extensions kotlin-coroutines