Kotlin 协程源码解析

22 阅读1分钟

Kotlin 协程源码解析

从 Kotlin 编译器生成的代码出发,逐步深入 Kotlin 协程的底层实现。

suspend 函数 → 状态机 → Continuation → Continuation 链 → 挂起与恢复 → Dispatcher

目录

  1. Kotlin 协程源码解析(一)一个 suspend 函数,为什么会变成一个普通函数?
  2. Kotlin 协程源码解析(二)Kotlin 编译器是如何把 suspend 函数变成状态机的?
  3. Kotlin 协程源码解析(三)Continuation 到底是谁创建的?
  4. Kotlin 协程源码解析(四)Continuation 的链式关系 —— 一个 suspend 函数如何把结果交还给调用者?
  5. Kotlin 协程源码解析(五):BaseContinuationImpl.resumeWith() —— Continuation 链是如何被展开的?
  6. # Kotlin 协程源码解析(六)delay() 是如何挂起协程的?

阅读路线

suspend 函数
     ↓
编译器生成普通函数
     ↓
状态机
     ↓
Continuation
     ↓
Continuation 链
     ↓
挂起与恢复
     ↓
Dispatcher

这个系列会从 Kotlin 协程最基础的编译结果开始,一层一层向下追踪源码,最终理解一个协程从调用、挂起到恢复执行的完整过程。

后续文章会持续更新到这里。