并发
在同一时间段,看上去是并行执行的
微观:单核交替执行不同任务进程或者线程间的上下文交换
并行
CPU 在某一时刻有两个任务通知在执行
多核处理器,在微观下不同 CPU 核心并行处理多个任务
同步
必须任务 a 执行完毕才能执行任务 b,没有并发和并行的概念
异步
任务之间没有顺序关系,可以并发、并行执行,使用多线程实现
如果是单核或者设置 CPU 核心亲和力将线程全部绑定到一个核心上,CPU 就会使用交替时间片的形式执行(就是并发),也就是单线程异步编程(Python asyncio),使用单线程实现并发
异步使用场景:IO 密集型任务(IO 操作耗时 CPU 使用多线程会导致大量资源空闲,多线程也会占用内存,线程间切换也会消耗资源)
多线程使用场景:计算密集型任务