并发与并行,虽然只差了一个字,但是还是有 很大区别。
我们经常看到并行计算,虽然并发计算也是有的,但提得要少一些。
一、并发(concurrency)和并行(parallellism)
1、解释
Rob Pike对此有经典描述:
并发是同一时间应对(dealing with)多件事情的能力;
并行是同一时间动手做(doing)多件事的能力。
这解释也许还很抽象,让你不太明白。那么请让你多背几遍,也许你就慢慢能体会了。
并发是问题域中的概念:程序需要被设计成能够同时处理多个同时(或几乎同时)发生的事情。
并行则是方法论的概念:通过将问题中的多个部分并行执行,来加速解决问题;
2、并行与串行
与并行应对应的是串行。并行的条件是有多个或一个独立执行块。
3、并发处理更前端的问题,为并行打下基础。
二、单核与多核
在单核的世界中,你并不拥有二个同时执行的能力。但多核的情况下,发生了变化。
《并发的艺术》:
“You can get concurrency on a single core processor using preemptive time-shared threads. But what you cannot achieve on a single core processor is parallelism.”
在单核的世界中,可以通过多线程来达“处理”并发的问题;但并不具备并行执行的能力。
这里我们先来看一下并发和并行的概念,我们知道并发是一个处理器同时处理多个任务,这里同时是逻辑上的,而并行同一时刻多个物理器同时执行不同指令,这里的同时物理上的。并发是要尽量在目前正在执行的任务遇到阻塞或者等待操作时,释放CPU,让其它任务得以调度,而并行则是同时执行不同任务而不相互影响。
原文链接:https://blog.csdn.net/BEYONDMA/article/details/119276097
这篇文章写得也不错,可以参考一下:
https://blog.csdn.net/zxw136511485/article/details/52813927