朱涛 · Kotlin 编程第一课
朱涛
Google 认证的 Kotlin、Android 开发者专家,博客“Kotlin Jetpack 实战”作者
6717 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
朱涛 · Kotlin 编程第一课
15
15
1.0x
00:00/00:00
登录|注册

26 | 协程源码的地图:如何读源码才不会迷失?

你好,我是朱涛。
在前面学习协程的时候,我们说过协程是 Kotlin 里最重要、最难学的特性。之所以说协程重要,是因为它有千般万般的好:挂起函数、结构化并发、非阻塞、冷数据流,等等。不过协程也真的太抽象、太难学了。即使我们学完了前面的协程篇,知道了协程的用法,但也仍然远远不够,这种“知其然,不知其所以然”的感觉,总会让我们心里不踏实。
所以,我们必须搞懂 Kotlin 协程的源代码。
可问题是,协程的源码也非常复杂。如果你尝试研究过协程的源代码,那你对此一定深有体会。在 Kotlin 协程 1.6.0 版本中,仅仅是协程跟 JVM 相关的源代码,就有 27789 行。如果算上 JavaScript 平台、Native 平台,以及单元测试相关的代码,Kotlin 协程库当中的源代码有接近 10 万行。面对这么多的源代码,我们根本不可能一行一行去分析。
因此,我们在研究 Kotlin 协程的源代码的时候,要有一定的技巧。这里给你分享我的两个小技巧:
理解 Kotlin 协程的源码结构。Kotlin 协程的源代码分布在多个模块之中,每个模块都会包含特定的协程概念。相应的,它的各个概念也有特定的层级结构,只有弄清楚各个概念之间的关系,并且建立一个类似“地图”的知识结构,我们在研究源码的时候,才不会那么容易迷失。
明确研究源码的目标。正如我前面提到的,我们不可能一次性看完协程所有的源代码,所以我们在读源码的过程中,一定要有明确的目标。比如是想要了解挂起函数的原理,还是想学习协程的启动流程。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kotlin协程源码的探索就像是一场原始森林的探险,需要一张清晰的地图和明确的目标。本文分享了研究Kotlin协程源码的技巧,包括理解源码结构和明确研究目标。协程源码分为基础层、中间层和平台层,读者可以通过掌握这个地图来快速查找和定位相关模块对应的源代码,避免迷失方向。此外,文章还提到了研究源码前需要掌握协程调试技巧和协程的基础元素。读者在学习过程中可以通过实际运行、调试课程中给出的代码Demo来提高学习效率。文章还分享了读取依赖包源代码的方式和配置编译环境的方法。总结了协程源码的结构和重要元素,为读者提供了探索协程源码的准备工作。整体而言,本文为读者提供了探索Kotlin协程源码的指导和技巧,使读者能够更好地理解和应用协程特性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《朱涛 · Kotlin 编程第一课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • 神秘嘉Bin
    创.…创建协程?

    作者回复: 是啊

    2022-03-21
    4
  • Paul Shan
    第一个函数好像是从挂起函数构建状态为挂起的代码单元模块 第二个函数好像是从挂起函数构建状态为执行的代码单元模块

    作者回复: 是的

    2022-03-24
    3
  • 钟意
    public fun <T> (suspend () -> T).createCoroutine public fun <R, T> (suspend R.() -> T).createCoroutine public fun <T> (suspend () -> T).startCoroutine public fun <R, T> (suspend R.() -> T).startCoroutine 前者是 创建协程,后者是 创建并启动协程 请问作者,这个 R.() 这个 R有什么用呢, 没有 R 和 有 R 有何区别呢?
    2022-07-29归属地:陕西
    2
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部