Tag: 异步await

在Kotlin协同程序中暂停function是什么意思

我正在阅读Kotlin Coroutine,知道它是基于suspendfunction的。 但suspend是什么意思? 协程或函数被暂停? 从https://kotlinlang.org/docs/reference/coroutines.html 基本上,协程是可以暂停而不阻塞线程的计算 我听到有人经常说“暂停function”。 但是我认为是因为等待函数完成而被暂停的协程? “挂起”通常意味着“停止运行”,在这种情况下,协程是空闲的。 🤔我们应该说协程暂停了吗? 哪个协程暂停? 从https://kotlinlang.org/docs/reference/coroutines.html 为了继续这个比喻,await()可以是一个挂起函数(因此也可以从async {}块中调用)暂停一个协程,直到某个计算完成并返回结果: async { // Here I call it the outer async coroutine … // Here I call computation the inner coroutine val result = computation.await() … } 🤔它说“暂停一个协程,直到一些计算完成”,但协程就像一个轻量级的线程。 所以如果协程暂停,那么计算如何完成呢? 我们看到await被调用computation ,所以它可能是async ,返回Deferred ,这意味着它可以启动另一个协程 fun computation(): Deferred { return async { true } […]