美文网首页
协程简单理解

协程简单理解

作者: 梧叶已秋声 | 来源:发表于2022-10-31 16:18 被阅读0次

带着以下几个问题去简单理解协程原理。
1.协程到底是怎么创建和启动的?
简略版可参考这篇:
Kotlin协程createCoroutine和startCoroutine原理
详细版可参考《深入理解Kotlin协程》第三章。
2.协程是如何描述的?
协程是通过Job去描述的。
基本上每启动一个协程就会产生对应的Job。
它提供了六种状态来表示协程的运行状态。

New: 创建
Active: 运行
Completing: 已经完成等待自身的子协程
Completed: 完成
Cancelling: 正在进行取消或者失败
Cancelled: 取消或失败

详细版可参考《深入理解Kotlin协程》第五章第二节。

参考链接:
Kotlin协程实现原理:CoroutineScope&Job
3.协程是如何与线程关联的?
可参考这篇:
Kotlin协程之Dispatchers原理
简单总结:

https://zhuanlan.zhihu.com/p/549348531
Dispatchers是协程框架中与线程交互的关键。底层会有不同的线程池,Dispatchers.Default、IO,协程任务来了的时候会封装成一个个的Runnable,丢到线程中执行,这些Runnable的run方法中执行的其实就是continuation.resume,也就是launch的Lambda生成的SuspendLambda匿名内部类,也就是开启协程状态机,开始协程的真正执行。

4.协程是怎么切换线程的?
简单总结:CoroutineContext 里存放着协程的分发器。CoroutineDispatcher决定了运行在哪个线程上。
详细可参考这几篇:
Kotlin 协程源码解析
Kotlin 协程调度切换线程是时候解开真相了

5.协程执行、挂起、恢复的流程

https://juejin.cn/post/7111246680338464804#heading-6

相关文章

  • 协程简单理解

    带着以下几个问题去简单理解协程原理。1.协程到底是怎么创建和启动的?简略版可参考这篇:Kotlin协程create...

  • 协程

    协程 1.Kotlin 中的协程是什么? 简单理解:一般程序会有一个主进程,主进程中可能含有多个线程。而协程,是线...

  • 入门-协程(Coroutine)

    使用协程需要引入 1.什么是协程 官方文档(本质上,协程是轻量级的线程。) 个人理解:协程是一个线程框架,协程就是...

  • 理解协程

    一、进程、线程、协程的区别 进程:操作系统中分配资源的基本单位 线程:操作系统中调度资源的基本单位 协程:比线程更...

  • Python协程可是神器!不知道哪些人居然说是鸡肋!最全教程合集

    了解协程的过程 先通过一个简单的协程的例子理解: 对上述例子的分析: yield 的右边没有表达式,所以这里默认产...

  • Kotlin协程使用

    目录 协程的用法 协程同步异步请求与Rxjava,原生写法的区别与优势 对于协程的理解 1.协程的用法 在安卓中添...

  • Kotlin协程(入门向)

    最近在学习kotlin的协程,分享一下学习经验! 〇、什么是协程? 官方解释: 协程是轻量级的线程。 个人理解:协...

  • Kotlin协程

    最近在学习kotlin的协程,分享一下学习经验! 〇、什么是协程? 官方解释: 协程是轻量级的线程。 个人理解:协...

  • Generator和协程

    Generator与协程什么是协程协程是一种程序运行的方式,可以理解成“协作的线程”或“协作的函数”。协程既可以用...

  • [libco] 协程栈空间

    协程“栈”空间,有独立栈和共享栈,重点理解一下协程共享栈。 文章来源:[libco] 协程栈空间[https://...

网友评论

      本文标题:协程简单理解

      本文链接:https://www.haomeiwen.com/subject/szjltdtx.html