首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Continuation - 连接异步任务和同步代码

只要整个过程遵循 continuation 被正确执行恢复操作一次的要求,continuation 可以在任何地方执行恢复操作。...init(continuation: UnsafeContinuation) { self.continuation = continuation...仍然会泄漏未恢复任务;尝试多次恢复 continuation 仍然会造成传到 continuation 中的信息丢失;如果with*Continuation操作误用了 continuation,这仍然是一个严重的编程错误...修改记录 第三次修改: 使用单个Continuation类型代替单独的*Continuation和*ThrowingContinuation类型,Continuation...第二次修改: 描述清楚with*Continuation和*Continuation.resume的执行行为,即在挂起任务之前,with*Continuation会立即在当前上下文中执行其操作参数,再取消挂起任务后

2.1K10

Android面试题之Kotlin 协程的挂起、执行和恢复过程

2.2 Continuation Kotlin中的挂起函数实质上会被编译器转换成带有回调的 Continuation 对象。...该对象包含两个主要部分: 上下文(Continuation Context):绑定的执行环境。 恢复逻辑(Resume Logic):保存和处理挂起点的逻辑。...4.2 调度器分配新的线程运行 调度器会将保存的 Continuation 对象重新分配给线程池中的某个线程,调用 resumeWith 方法恢复协程: continuation.resumeWith(...协程在其他线程执行完后的通知机制 5.1 异步任务完成通知 当协程在新的线程中执行完任务(比如完成网络请求等异步任务)时,执行环境会调用 Continuation 的 resumeWith 方法: continuation.resumeWith...6.3 恢复执行 调度器调用 Continuation 的 resume 方法,将保存的上下文和状态恢复到协程堆栈: continuation.resume(result) 然后,协程在新的或原来的线程上恢复执行挂起点之后的代码

9610
领券