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