作者回复: 很棒的答案!
作者回复: 是的,这也是它们的一大差异。
作者回复: 很棒的答案。
作者回复: 如果你去源码里看“kotlin.coroutines.intrinsics.Intrinsics.kt”当中的suspendCoroutineUninterceptedOrReturn(),就可以找到引用了。不要去找IntrinsicsJvm.kt里面的,因为它只是JVM层的具体实现。
作者回复: 很棒的答案~ resume resumeWith resumeWithException 的原理都是 resumewith(),它们的区别主要是值的区别。当然,它传入的值的类型,也会影响协程的后续执行流程,比如说,如果是传入了异常信息,那么协程内部就要处理相关的异常逻辑了。
作者回复: 27讲当中的状态机只是没有体现出resumeWith而已,实际上,挂起函数可以通过两种方式返回,可能是resumeWith,也可能是直接return返回。