一、需要了解的概念
1、进程和程序的区别
程序就是一堆死的东西,没有生命周期
进程是有生命周期的,当一个任务进行完毕之后,进程就不存在了
2、cpu的工作机制
1.当CPU遇到I/O操作的时候,会剥夺CPU的执行权限
I/O密集型:
input output
遇到阻塞,但是不需要占用大量的CPU资源,需要等待,比如:sleep
2.当遇到的任务需要占用大量的计算时间的时候,也会剥夺执行权限
计算密集型
没有遇到阻塞,但是需要占用大量的CPU资源,也不需要等待
3、操作系统的调度算法
1. 先来先服务调度算法
2. 短作业优先调度算法
3. 时间片轮转法
4. 多级反馈队列
二、同步、异步、阻塞、非阻塞
阻塞(Blocking)和非阻塞(Non-blocking)关注的是任务的执行方式:
- 阻塞:在阻塞模式下,任务会等待某个操作的完成,无法进行其他任务,直到操作完成才能继续执行。任务按照串行方式执行。
- 非阻塞:在非阻塞模式下,任务不会等待操作的完成,而是立即返回并继续执行其他任务。任务可以通过轮询或回调等方式来检查操作是否完成。
同步(Synchronous)和异步(Asynchronous)关注的是任务的通信模式:
- 同步:在同步模式下,任务发出一个请求后,会一直等待结果返回,期间无法执行其他任务。任务的执行顺序是有序的,依赖于前一个任务的结果。
- 异步:在异步模式下,任务发出一个请求后,不需要等待结果返回,可以继续执行其他任务。任务的执行顺序可以是无序的,任务之间相互独立。
可以总结如下:
- 阻塞和非阻塞描述任务的执行方式,阻塞模式下任务会等待操作完成,非阻塞模式下任务会继续执行。
- 同步和异步描述任务的通信模式,同步模式下任务会等待结果返回,异步模式下任务不需要等待结果返回。
- 阻塞和非阻塞主要关注任务自身的执行,同步和异步主要关注任务之间的通信方式。
需要注意的是,阻塞和同步以及非阻塞和异步并不完全等价。一个任务可以是阻塞同步的,即任务在等待操作完成时是阻塞的,而任务的通信方式是同步的。类似地,一个任务可以是非阻塞异步的,即任务在等待操作完成时是非阻塞的,而任务的通信方式是异步的。
标签:异步,同步,python,编程,阻塞,模式,并发,任务,等待 From: https://www.cnblogs.com/dgp-zjz/p/17528073.html