有个地方不理解
来源:12-2 案例:仿官方框架实现 launch 2

慕雪4289266
2020-09-30
private suspend fun joinSuspend() = suspendCoroutine<Unit> { continuation ->
doOnCompleted {
continuation.resume(Unit)
}
}
上面这个join的实现,用到了suspendCoroutine,我记得前几节课里,老师你说过,suspendCoroutine中必须要执行线程切换,这个suspend函数才会被真正的挂起,挂起后会返回一个特殊的标记对象。但是这里doOnCompleted中我看了下只是用来创建和保存Disposable,并没有执行线程切换呀?它是如何被挂起的呢?
写回答
1回答
-
bennyhuo
2020-09-30
切换调用栈不一定切换线程。我肯定不会说一定要切线程的。
切换线程是切换调用栈的充分不必要条件。其实只要保存回调,在其他时候同一个线程调用,一样不是异步的。
042020-10-08
相似问题
有几个地方不理解
回答 1
为什么不能在 main 方法中属性代理
回答 1