纠错--并发和并行的区别

并行性和并发性是既相似又有区别的两个概念,再开始分析之前,我们先给出并发和并行的概念。

并行是指两个或多个事件在同一时刻发生。

并发是指两个或多个事件在同一时间间隔内发生。

​ 大家看到的图一般如下所示:
原本大家理解的并发

并行

上述是博主看到的并发和并行的理解,其实我之前也一直是这么认为的,一直到我写了上一篇博客,从操作系统的发展过程对进程和线程进行了分析,才觉得并发的概念似乎并不是这样的,因此这篇博客是一篇纠错博客,如果理解的有误,还请大家一起进行讨论。首先指出我认为的错误,并发并不是指同一时刻只能有一条指令执行,造成这个困扰的原因是在单核CPU的操作系统中,每一时刻仅能有一道程序执行,故微观上这些程序只能分时的交替执行,此时情况如下图:
单CPU操作系统下的并发

在上图中,事件A、B、C、D、E、F、G在单核CPU的操作系统中依次的执行,这也是我们之前理解的并发。但是在多核CPU的操作系统中,这些并发的程序便可被分配到多个处理机上,实现真正意义上的并行(这里可以参考我的另一篇博文),即利用每个处理机来处理一个可并发执行的程序,这样多个程序便可以同时执行,图示如下所示:
多CPU操作系统中的并发

在上图中,事件A、B,事件G、F在多核CPU操作系统中可以做到真正的并行执行。因此在多CPU的环境下,并发的程序有可能会转为并行,但是需要多个程序可以同时能抢占到处理机(这部分是处理机调度问题,大家有兴趣可以关注我的博客,后续后讲到)。

​因此并发和并行在关系上又有些变化,并发在一定条件下(多CPU操作系统)可以部分事件并行执行。上面这句话是博主自己总结的。

​现在我们在对并发和并行的两个概念来做一下解读。对于并行,大家应该没什么不同,而且概念也比较清晰。但是对于并发,概念上讲多个事件在同一时间间隔内发生,但是在这一个事件间隔内,没有约束部分事件不可同一时刻发生,即并行。

​博客到这里也就结束了,如果大家有什么疑问,可以评论留言,如果有不同意见,也可以留言讨论。原创不易,并且今天还是1024程序员节,如果对你有帮助,还请留下个赞。

发布了27 篇原创文章 · 获赞 212 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_34666857/article/details/102730424