同步和异步,进程,线程和协程之间的区别和联系
同步和异步,进程,线程和协程之间的区别和联系
同步和异步、阻塞和非阻塞
1 | 异步: 多任务, 多个任务之间执行没有先后顺序,可以同时运行,执行的先后顺序不会有什么影响,存在的多条运行主线 |
1)同步、异步
1 | 函数或方法被调用的时候,调用者是否得到最终的结果。 |
2)阻塞、非阻塞:
1 | 函数或方法调用的时候,是否立即返回。 |
3)区别:
1 | 同步、异步,与阻塞、非阻塞不相关。 |
4)联系:
1 | 同步阻塞:调用者阻塞,直到等到拿到最终结果。(打饭模型,什么事情也不敢,就等着打饭,打饭是结果,什么也不干,一直在等着,同步加阻塞) |
进程、线程和协程之间的区别和联系
定义
进程: 一个运行起来的程序或者软件叫做进程,进程是操作系统分配资源的 基本单位
线程:指进程内的一个执行单元,也是进程内的可调度实体。
协程:是一种程序组件,是由子例程(过程、函数、例程、方法、子程序)的概念泛化而来的,子例程只有一个入口点且只返回一次,而协程允许多个入口点,可以在指定位置挂起和恢复执行。
区别
进程是资源分配的最小单位,线程是CPU调度的最小单位.
进程是操作系统资源分配的单位
线程是CPU调度的单位
进程切换需要的资源最大,效率很低
线程切换需要的资源一般,效率一般
协程切换需要资源很小,效率高
线程与进程的区别
同一个进程中的线程共享同一内存空间,但是进程之间是独立的。
同一个进程中的所有线程的数据是共享的(进程通讯),进程之间的数据是独立的。
对主线程的修改可能会影响其他线程的行为,但是父进程的修改(除了删除以外)不会影响其他子进程。
一个进程至少有一个线程
同一个进程的线程之间可以直接通信,但是进程之间的交流需要借助中间代理(队列)来实现
创建新的线程很容易,但是创建新的进程需要对父进程做一次复制。
一个线程可以操作同一进程的其他线程,但是进程只能操作其子进程。
线程启动速度快,进程启动速度慢(但是两者运行速度没有可比性)。
协程与线程的比较
一个线程可以多个协程,一个进程也可以单独拥有多个协程,这样python中则能使用多核CPU。
线程进程都是同步机制,而协程则是异步
协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态
代码demo:
1 | import time |
协程介绍: https://zhuanlan.zhihu.com/p/38528865
参考链接 : https://blog.csdn.net/DD18203614685/article/details/93226319