goroutine VS python 协程

协程概念 协程,其实可以理解为一种特殊的程序调用。特殊的是在执行过程中,在子程序(或者说函数)内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。 它有两个特征: 可中断,这里的中断不是普通的函数调用,而是类似CPU的中断,CPU在这里直接释放转到其他程序断点继续执行。 可恢复,等到合适的时候,可以恢复到中断的地方继续执行。 和进程线程的区别 上面两个特点就导致了它相对于线程和进程切换来说极高的执行效率,为什么这么说呢?我们先老生常谈地说一下进程和线程。 进程是操作系统资源分配的基本单位,线程是操作系统调度和执行的最小单位。 这两句应该是我们最常听到的两句话,拆开来说, 进程是程序的启动实例,拥有代码和打开的文件资源、数据资源、独立的内存空间。 线程从属于进程,是程序的实际执行者,一个进程至少包含一个主线程,也可以有更多的子线程,线程拥有自己的栈空间。无论是进程还是线程,都是由操作系统所管理和切换的。 我们再来看协程,它又叫做微线程,但其实它和进程还有线程完全不是一个维度上的概念。 进程和线程的切换完全是用户无感,由操作系统控制,从用户态到内核态再到用户态。 而协程的切换完全是程序代码控制的,在用户态的切换,就像函数回调的消耗一样,在线程的栈内即可完成。 ...

3 min · 1177 words · Luenci