Kotlin源码系列-launch源码笔记

前言

  • 从如何使用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

Author: golike
Link: http://jianhui1012.github.io/2024/09/09/Kotlin源码系列-launch源码笔记/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.