前言
从如何使用kotlin协程向研究协程内部运行机制看齐
启动协程:launch,async,runBlocking等,但只能通过调试参数,log日志看到协程
提出疑问:1.协程到底是如何创建的 2.对应的源码是哪些?哪些类和方法
类比java当中的线程类:Thread.java,寻找协程类,开始阅读源码
基础层(Kotlin库中定义的协程基础元素)
中间层(协程框架通用逻辑 kotlin.coroutines-common,包括:async,launch,Job,Deferred,Flow)
平台层(协程在特定平台的实现,JVM,JS,Native),JVM是线程池和Future,JS是JS线程和Promise
协程启动基础API
基础层-Continuation中两个扩展函数
- createCoroutine,创建协程
- startCoroutine,启动协程
中间层调用上面的两个方法
async
rubBlocking
launch,CoroutineScope.launch->CoroutineStart.invoke->block.startCoroutineCancellable->createCoroutineUnintercepted