常常看到的并发和并行其实非完全的互斥和相关的关系,只是不同角度的概念
场景一
并发: 一个阿姨给两个窗口的人打饭,依次窗口A、窗口B ,未考虑优先级抢占问题说法(一个九尺霸道的人强制要求阿姨先给他打饭)
并行:多个阿姨给多个窗口的人打饭,同时进行两个窗口
场景二
在坐地铁,收到girlfriend微信、boss电话…(我…xxx…)
此时你坐地铁,心情不好,不接电话,不看微信,一直到地铁到站。说明目前(心情不好)不支持并发和并行
此时你坐地铁,接了boss电话,等接完电话再看girlfriend微信信息,说明支持并发能力
此时你坐地铁,接boss电话同时也在看微信(long time~),说明你有并发也有并行能力
【注】例子可能不是十分恰当
顺序与并发(Sequence and Concurrent):任务的发生
从任务(Task)抽象调度角度理解
顺序:与并发相对应的顺序,是多个任务(操作、程序)依次执行,A->B->C Task,依次A执行完 到B 再到C Task 是能够确定的顺序发生
并发:多个任务能够发生,发生的时间是不确定的,A->B->C Task 即A、B、C 三个Task执行完成的顺序是不确定的
【注】顺序和并发并不是指能否多线程或者CPU核,单核CPU(即只有一个内核CPU)并发不是真正的同时发生,而是CPU切换速度很快看起来是同时发生而已。且单核CPU并发时不必按照顺序!
串行和并行(Serial and Parallel):任务的执行
可以从通讯的角度理解
串行:只有一条桥,同一个时刻中,一组数据包裹依次通过一条桥
并行:有多条桥,同一个时刻中,一组数据包裹可以拆分为多分,一次多个数据包裹通过多条桥(主板南北桥总线)
串行和并行在执行效率上相差很大,可以看成相同的数据组,串行只能一组一组过桥,并行可以多组一起过桥。由此可以理解为:单核CPU中某刻只有一个实际执行的CPU
单核CPU & 多核CPU
单核(Mononuclear):串行(一个实际执行Task的CPU),并发(不必按照顺序调度Task)
多核(Multinuclear):并发、串行(所有的Task 线程都在同一个内核CPU中执行),并发、并行(不同的Task线程在不同的内核CPU中执行)
不同理解和修正会后续持续更…
本文探讨了并发与并行的区别,从阿姨打饭的场景出发,解释了并发是任务可能发生但顺序不确定,而并行是任务同时进行。在单核和多核CPU中,并发和并行的实现方式也有所不同。此外,还通过通讯的角度比喻串行和并行的执行效率差异。最后,提到了单核和多核CPU如何支持并发和并行任务的调度。

被折叠的 条评论
为什么被折叠?



