并发与并行

233 阅读1分钟

食堂打饭过程帮助你理解并发与并行:

某一天食堂只开设了两个窗口,所以只需要两个阿姨负责即可。因为只有两个窗口, 所以你懂的,两条队伍都巨长。

正常情况下两个阿姨负责各自的窗口即可,直到下班收场---- 这就是并行

可是今天不凑巧,其中一位阿姨临时有急事不得不离开。所以就只剩下一位阿姨负责这两个窗口咯。面对这两排巨长的队伍,阿姨把勺子扬起来说道:

“我只有一个人,你们这两排队伍,就一队一队的轮换着来”,就这样阿姨终于给每位同学都打好了饭菜----这就是并发

如果给并发和并行下一个更正式的定义:

并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。并行的多个任务之间是不互相抢占资源的。

image.png

并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行。使得在宏观上任务具有同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。并发的多个任务之间是互相抢占资源的。

image.png

:有木有发现并发的这个图与甘特图很相似,由此也可以想象得到,并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。