加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

区分“并发”与“并行”的概念

发布时间:2020-12-16 18:08:32 所属栏目:大数据 来源:网络整理
导读:并发与并行这两个概念是令人困惑的,但在go语言的编程中是必须要理解的。 并发(concurrent) 并发是指两种或两种以上的行为在系统中 同时存在 ,至于这两个行为是否在某一时刻同时“执行”,在并发的概念中并不考虑。 在go语言中,go语句可以开启一个新的goro

并发与并行这两个概念是令人困惑的,但在go语言的编程中是必须要理解的。

并发(concurrent)

并发是指两种或两种以上的行为在系统中同时存在,至于这两个行为是否在某一时刻同时“执行”,在并发的概念中并不考虑。
在go语言中,go语句可以开启一个新的goroutine,这就典型的并发。不同的goroutines在程序运行期间可能同时存在着, 至于这些goroutines在某一个时刻是不是同时运行, 我们不去关心。
事实上, 在单核CPU系统中, goroutines的运转是依赖cpu的时间片轮转算法的,即交替执行。但这的的确确是并发,原因是系统具备了同时处理多种行为的能力。实际上这是一种人类无法直接感知的“伪并行”,只不过从表面上看来,“像是同时执行的”。

并行(parellel)

并行意味着多个动作在某一时段是同时执行的。在多核CPU的前提下, go可以为goroutines指定运算需要的处理器数量, 这样的话, goroutines就是真正的并行了,每个goroutine有独立的CPU为自己运算,而不需要公用一个CPU来轮转运算。

对比

可以说并发是一个逻辑上的概念,并行是一个物理运行状态的概念。并行是并发的一个“子集”,并发包含并行。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读