前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >并发与并行

并发与并行

作者头像
胖虎
发布2020-11-24 10:18:22
9750
发布2020-11-24 10:18:22
举报
文章被收录于专栏:晏霖

点击上方“晏霖”,选择“置顶或者星标”

曾经有人关注了我

后来他有了女朋友

2.2.1认识并发与并行

我们理解了什么是线程,以及线程与进程对关系,那么我们现在可以简单理解为,并发就是在同一时刻多个线程操作同一物理CPU(或多个物理CPU)上的资源。

百度百科中,并发是指在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

同样,为了方便理解,我们利用生活中的一种模型去解释,把线程比作汽车,汽车通过高速收费站,假设收费站只开了一个收费口,这时所有车道上的汽车交替并入收费口通过,这个场景就是并发。这时我们脑子里马上就会反应出,如果只开一个收费口那么多的汽车肯定不是一个好方法,所以实际情况往往是开多个收费口,这就叫“并行”,所以我们概念性总结什么是并行?并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。在开发中也是无时无刻用到并行操作,例如处理集合我们可以使用parallelStream()并行流处理方法,他是线程不安全,用的时候要注意。

我们用下面两个图形象说明并发和并行。

图 2-2

图2-3

2.2.2并发、并行、线程之间的关系

我们利用一组图说明并发、并行和多线程的关系

图 2-4

图2-5

从图2-2我们看出并发是一个处理器在同一时间内处理多个事件,但并不是同时,其实是线程A、B、C是处理器通过时间片进行切换,实际情况中我们感觉好像是多个线程同时处理,那是因为处理器切换速度快。

从图2-3我们看出并行需要两个或两个以上的线程跑在不同的处理器上,因此并行是物理上的同时发生,是真实的同时。

通过上面的解释我们应该对线程、并发和并行有了一定认识,因此并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。并行包含并发,但并发小于并行。不管并发还是并行,都提高了程序对CPU资源的利用率,最大限度地利用CPU资源。

2.2.3并发和并行的区别

此小章节的内容是对上面并发与并行找出不同点,并发与并行本身就是一种概念性的理解,他可以理解成程序执行的一种模型,并发和并行离不开线程,无论是并发还是并行都是多核CPU在多线程下的执行形式。

区别一:并发是指一个处理器同时处理多个任务。并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。

区别二:并行(parallel)指在同一时刻,有多条指令在多个处理器上同时执行。无论从微观还是从宏观来看,二者都是一起执行的。并发(concurrency)指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。

我所指宏观是站在系统层面上看多个程序运行情况,微观是站在每一个线程对角度上看线程的执行情况。

区别三:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状态。这种方式我们称之为并发(Concurrent)。当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

胖虎

热 爱 生 活 的 人

终 将 被 生 活 热 爱

我在这里等你哟!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 晏霖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我们利用一组图说明并发、并行和多线程的关系
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档