zoukankan      html  css  js  c++  java
  • 协程概念

    协程就是一种用户态内的上下文切换技术

    我对协程的定义是:协程是在一个线程执行过程中可以在一个子程序的预定或者随机位置中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。他本身是一种特殊的子程序或者称作函数。

    区别:楼上很好很精辟。

    应用:协程基于generator,Python3中内置了异步IO。遇到IO密集型的业务时,总是很费时间啦,多线程加上协程,你磁盘在那该读读该写写,我还能去干点别的。在WEB应用中效果尤为明显。


    作者:如此这般
    链接:https://www.zhihu.com/question/35139020/answer/61705846
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    关键词:协程 栈帧 指令 切换 跳转

    异步结果的等待、后继计算的保存。 

    Coroutines are computer program components that generalize subroutines for non-preemptive multitasking, by allowing execution to be suspended and resumed. Coroutines are well-suited for implementing familiar program components such as cooperative tasks, exceptions, event loops, iterators, infinite lists and pipes.

    Python 3.5 introduces explicit support for coroutines with async/await syntax 

    Comparison with threads[edit]

    Coroutines are very similar to threads. However, coroutines are cooperatively multitasked, whereas threads are typically preemptively multitasked. This means that coroutines provide concurrency but not parallelism. T

    var q := new queue

    coroutine produce

        loop

            while q is not full

                create some new items

                add the items to q

            yield to consume

    coroutine consume

        loop

            while q is not empty

                remove some items from q

                use the items

            yield to produce

    Implementations for C[edit]

    In order to implement general-purpose coroutines, a second call stack must be obtained, which is a feature not directly supported by the C language. 

    Implementations for Rust[edit]

    There is a library for Rust that provides coroutines.[45] Generators are an experimental feature available in nightly rust that provides an implementation of coroutines with async/await.[46]

  • 相关阅读:
    25 Groovy 相关资料
    24 使用Maven 或 Gradle构建groovy
    UVA
    UVA
    UVA
    UVA
    UVA
    【JZOJ4235】序列【数论,数学】
    【JZOJ4235】序列【数论,数学】
    【JZOJ5230】队伍统计【状压DP】
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10479161.html
Copyright © 2011-2022 走看看