0x00 协程

协程(Coroutine), 又称纤程.

  • 函数/子程序: 在程序中是层级调用的, 例如函数A调用函数B, 函数B再调用函数C. C执行完毕后返回到B, B执行完毕后返回到A, 最后A执行完毕. 子程序的调用时通过实现的.

    • 一个线程就是一个子程序

    • 子程序总是一个入口, 一个出口, 调用顺序是明确的

  • 协程: 协程的运行与子进程相似, 但执行过程中, 在子程序的内部可中断, 转而去执行别的子程序, 在适当的时候再回来继续执行.

    • 多个子程序都是在一个线程中执行

    • 与多线程相比, 优势在于:

      • 极高的执行效率: 子程序的执行不是线程切换, 由程序自身控制, 没有线程切换的开销. 和多线程比, 线程数量越多, 写成的优势越明显

      • 不需要多线程的锁机制, 因为只有一个线程, 不存在同时写变量的冲突. 因此, 在写成中的共享资源不用加锁, 执行效率又进一步提高

    • 写成是在一个线程中执行, 为了利用多核CPU, 可以采用多进程+协程的方法, 获得高性能

最后更新于