什么是coroutine(协程)?

Coroutine isn't thread!(协程不是线程!)

Coroutinethread有许多共同点:每个coroutine(或thread)都有一组指令执行序列,私有的栈,私有的局部变量,私有的程序计数器(program counter);同时各个coroutine(或thread)之间共享全局变量等等信息。

Coroutinethread的不同在于:在多核系统上,一个进程的多个thread是可以并行运行的(in parallel),即在一个时间点上,多个thread同时在运行。而coroutine之间是合作式的(collaborative),在任何一个时间点,只有一个coroutine在运行。Coroutine之间的调度是非抢占式的(non-preemptive):只有运行的coroutine主动地放弃执行权,其它coroutine才可以获得执行机会。

《什么是coroutine(协程)?》有4个想法

  1. 我的理解:协程之间的切换指的是一个进程内部协程之间的切换,应该和进程之间的上下文切换没有关系。

发表评论

邮箱地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.