并发与并行
并发和并行是指操作系统处理任务的能力。
即有多个任务时是一个一个的处理?还是一次处理多个?
- 并发:操作系统具有处理多个任务的能力
- 并行:操作系统具有同时处理多个任务的能力
并发是包含并行的,这里再提出一个伪并行的概念,就是看起来像是同时处理多个任务,但是实际上这些任务并不是被同时处理的,而是具有一定的先后次序,由于这种任务处理切换的速度太快了,所以看起来像是同时处理。
同步与异步
同步和异步是指任务的提交方式。
即当一个任务提交完成后是否需要等待任务的反馈结果出现后再去做其他的事情。
-
同步:当任务提交完成后,原地等待任务的返回结果,等待的过程中不做任何事
程序上面表现出来的感觉就是卡住了
-
异步:任务提交之后,不原地等待任务的返回结果,直接去做其他事情
当任务结果出现后会自动反馈给调用者
同步很好理解,但是异步的执行结果是怎么自动反馈的呢?
这是因为我们在提交异步任务的时候会给任务绑定一个回调函数,当任务完成后会自动的触发该回调函数获得任务执行结果。
阻塞与非阻塞
阻塞和非阻塞是指程序的运行状态。
即程序现在是否卡住了?卡住了就是阻塞,没卡住就是非阻塞,常见I/O操作。
- 阻塞:当调用某个函数的时候卡住不懂了,如input()函数
- 非阻塞:当调用某个函数的时候,如遇见I/O操作程序并不会卡住而是去做其他的事情