美文网首页
理解协程

理解协程

作者: 大饼脸me | 来源:发表于2017-09-22 16:52 被阅读4次
一、进程、线程、协程的区别
  • 进程:操作系统中分配资源的基本单位
  • 线程:操作系统中调度资源的基本单位
  • 协程:比线程更小的的执行单元,自带cpu上下文,一个协程一个栈
  • 一个进程中可能存在多个线程,一个线程中可能存在多个协程。
  • 进程、线程的切换由操作系统控制,而协程的切换由程序员自身控制。
  • 异步i/o利用回调的方式来应对i/o密集,同样的使用协程也可以来应对,协程的切换并没有很大的资源浪费,将
  • 一个i/o操作写成一个协程,这样进行i/o时可以把cpu让给其他协程。
  • js同样支持协程,那就是yield。使用yield给我们直观的感受就是,执行到了这个地方停了下来,其他的代码继续跑,到你想让他继续执行了,他就是会继续执行。
二、协程的运行流程

第一步,协程A开始执行。
第二步,协程A执行到一半,进入暂停,执行权转移到协程B。
第三步,(一段时间后)协程B交还执行权。
第四步,协程A恢复执行。

function asnycJob() {
  // ...其他代码
  var f = yield readFile(fileA);
  // ...其他代码
}

上面代码的函数 asyncJob 是一个协程,它的奥妙就在其中的 yield 命令。它表示执行到此处,执行权将交给其他协程。也就是说,yield命令是异步两个阶段的分界线。
协程遇到 yield 命令就暂停,等到执行权返回,再从暂停的地方继续往后执行。它的最大优点,就是代码的写法非常像同步操作,如果去除yield命令,简直一模一样。

相关文章

  • 入门-协程(Coroutine)

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

  • 理解协程

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

  • Kotlin协程使用

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

  • Kotlin协程(入门向)

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

  • Kotlin协程

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

  • Generator和协程

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

  • [libco] 协程栈空间

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

  • Python协程

    最近对Python中的协程挺感兴趣,这里记录对协程的个人理解。 要理解协程,首先需要知道生成器是什么。生成器其实就...

  • Android面试Kotlin高阶篇(八)

    问:你对Kotlin的协程理解 答:协程可以看作是一种轻量级的线程,只不过线程有系统调度,而协程由代码来控制。协程...

  • 关于kotlin 协程Coroutines

    Coroutines 协程是什么 从 Android 开发者的角度去理解协程 (Coroutines) 和线程 (...

网友评论

      本文标题:理解协程

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