并发与并行
并发:逻辑上的同时发生,强调有处理多个任务的能力但不一定要同时
并行:物理上的同时发生,强调有同时处理多个任务的能力
打个比方,并发相当于一个人吃三个馒头,而并行相当于三个人吃三个馒头。而Erlang之父Joe Armstrong则用咖啡机和等待取咖啡的人来类比:并发是两条队列交替使用一台咖啡机,并行是两个队列同时使用两台咖啡机。
与可以一起出发的并发(concurrent)相对的是不可以一起出发的顺序(sequential)
- 顺序:上一个开始执行的任务完成后,当前任务才能开始执行
- 并发:无论上一个开始执行的任务是否完成,当前任务都可以开始执行
与可以一起执行的并行(parallel)相对的是不可以一起执行的串行(serial)
- 串行:有一个任务执行单元,从物理上就只能一个任务一个任务执行
- 并行:有多个任务执行单元,从物理上就可以多个任务一起执行