并发与并行的区别
- 并发(concurrency)是说进程B的开始时间是在进程A的开始时间与结束时间之间,我们就说A和B是并发的。
- 并行(parallelise)是并发的真子集,指同一时间两个进程运行在
不同
的机器上或者同一个机器不同核心
上。
这里还要说明一下。
并发和并行是相关
的,但是是两个不同的概念
。
-
Parallel Computing:并行计算
-
Concurrent programming:并发编程
再引用一张图Erlang 之父 Joe Armstrong画的图如下。
我画的如下。
只有一个咖啡机的时候,一台咖啡机其实是在并发被使用的。而有多个咖啡机的时候,多个咖啡机之间才是并行被使用的。
- 并发,指的是多个事情,在同一时间段内同时发生了。
- 并行,指的是多个事情,在同一时间点上同时发生了。
- 并发的多个任务之间是互相抢占资源的。
- 并行的多个任务之间是不互相抢占资源的、只有在多CPU的情况中,才会发生并行。
- 否则,看似同时发生的事情,其实都是并发执行的。
总结
- 并发(concurrency)同时间(某段)
- 并行(parallelise)同时刻(某点)
并发和并行是相关的,但是是不同概念的。
参考地址:漫小话
版权声明:本文为s1156605343原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。