分别阐述进程、线程、协程的区别和联系

进程:一个运行的程序(代码)就是一个进程,没有运行的代码叫做程序,进程是系统资源分配的最小单位,进程拥有自己独立的内容空间,所以进程间数据不共享,开销大。

线程:调度执行的自小单位,也叫执行路径,不能独立存在,依赖进程存在一个进程至少有一个有一个线程,叫做主线程,而多个线程共享内容(数据共享,共享全局变量),从而极大的提高了程序的运行效率。

协程:是一种用户态的轻量级线程,协成的调度完全是由用户控制,协成拥有自己的寄存器上下文和栈,协成调度切换时,将寄存器上下文和栈保存到其他地方,在切换回来的时候,恢复先前保存的积存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。

线程是非独立的,用一个进程里线程是数据共享的当各个线程访问数据资源时会出现竞争状态即:数据几乎同步会被多个线程站用,造成数据混乱,即,所谓的线程不安全。

进程和线程的切换是由系统决定,而协成是由我们程序员自己决定,而模块gevent 下切换是遇到了耗时操作才会切换。

三者的关系:进程里有线程,线程里有协程。

猜你喜欢

转载自blog.csdn.net/qq_42467563/article/details/85639214