并发模型和并行编程模型

一、并发

1、并发性考虑的是同时发生的两个或者两个以上的活动。
2、并发处理有队列等候、唤醒、执行至少三个这样的步骤。
3、并发是宏观概念,在微观上它们都是序列被处理的,只不过资源不会在某一个上面被阻塞,一般都是通过时间进行轮转,所以在宏观上看多个几乎同时到达的请求同时被处理。
4、同一个时刻到达的请求也会根据优先级的不同,而后进入队列排队等候执行。
5、并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。
6、并发,是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为cpu要在多个程序间切换)运行多个程序。
并发模型和并行编程模型

二、并行

1、并行性指的是以提高总体性能为明确目标,并行进行两个或者多个任务。
2、并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生。
3、并行性指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。
4、并行,是每个cpu运行一个程序。
并发模型和并行编程模型

二、并行和并发的关系

1、并行程序必须具有并发性,但是并发程序并不一定需要具有并行性。
2、下面的图示展示了这种关系。
并发模型和并行编程模型
3、在网上看到了一片对于并行和并发的趣味解释,在这里分型给大家,以供理解:

打个比方。并发,就像一个人(cpu)喂2个孩子(程序),轮换着每人喂一口,表面上两个孩子都在吃饭。并行,就是2个人喂2个孩子,两个孩子也同时在吃饭。