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

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

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

​ 大家看到的图一般如下所示:
纠错--并发和并行的区别

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

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

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

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

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

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

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

相关文章:

  • 2021-04-07
猜你喜欢
  • 2021-05-24
相关资源
相似解决方案