千家信息网

Go语言并发与并行的区别是什么

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解" Go语言并发与并行的区别是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习" Go语言并发与并行的区别是什么"吧!现在我们都说设计可并
千家信息网最后更新 2026年11月03日Go语言并发与并行的区别是什么

本篇内容主要讲解" Go语言并发与并行的区别是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习" Go语言并发与并行的区别是什么"吧!

现在我们都说设计可并行、高并发的程序,而且我们很多时候会在潜意识里觉得自己对并行(Parallelism)和并发(Concurrency)的区别很清楚,但如果要明确的说出二者的区别,又感觉没办法给出一个非常清晰的描述。

那么什么是并发?什么又是并行呢?并行的概念比较简单,并行总是和执行(executions)相关,很多东西同时执行就是并行;而并发则是通过一些方式组织你的程序,让它可以分成多个模块去独立的执行。并行必然是需要多核的,一个处理器是无法并行的;但并发和处理器并没有什么必然联系,在一个处理器上面,我们的程序也可以是并发的。

举个简单的例子,华罗庚泡茶,必须有烧水、洗杯子、拿茶叶等步骤。现在我们想尽快做完这件事,也就是"一共要处理很多事情",有很多方法可以实现并发,例如请多个人同时做,这就是并行。并行是实现并发的一种方式,但不是唯一的方式。我们一个人也可以实现并发,例如先烧水、然后不用等水烧开就去洗杯子,所以通过调整程序运行方式也可以实现并发。

如果你觉得以上的讲解还是太抽象了,下面通过一个小故事来讲解,故事原型来自 Go 语言创始人之一 Rob Pike 的一篇演讲。

故事的开始有一个需求:有一群地鼠要把一堆废弃的说明书用小推车推到火炉去烧毁。

刚开始只有一只地鼠,使用一辆推车,将书装到车上,运输到火炉旁,将书卸到火炉。完成任务必然需要比较长的时间。

此时如果再增加一只地鼠,那也没什么用,因为一只地鼠在干活,另一只地鼠只能等待。(当然有人说两只地鼠轮流使用一辆推车,这样可以让地鼠得到休息,这样它们干活更快,也可以提高效率。)

再找一辆推车来,两只地鼠分别使用各自的推车,将书装到车上,运输到火炉旁,将书卸到火炉。这样会提高运输效率,但它们会在装书和卸书时进行排队,降低了效率。

这样虽然比之前快了,但还是有瓶颈的。因为书只有一堆,火炉也只有一个,所以我们还必须通过消息来协调两只地鼠的行动。好吧,那我们再把书分成两堆,再增加一个火炉。

这样就比之前的效率高差不多一倍了。现在这个模型就是并发的,因为两只地鼠可以独立完成一件事了,这样提高了运输效率,而且在装书和卸书时不会进行排队,提高了装卸的效率。但这个模型不一定是并行的,比如同一时刻可能只有一只地鼠在干活。

上面就是第一种并发模型,我们还可以设计更多的并发模型,继续看漫画。

这次找了 3 只地鼠,一只负责把书装到车上,一只负责运输,一只负责把书卸到火炉焚烧。每只地鼠做一个独立的任务,当然三只地鼠之间需要使用一些诸如消息通信之类的手段进行协调。

装书和烧书的两只地鼠都很轻松,负责运输的这只地鼠却很累,系统出现了瓶颈。那我们再找一只地鼠来,专门负责运回空推车。

我们在一个已有的设计(指三个地鼠的那个设计)中添加一个并发的步骤(第四只地鼠)增强了系统的性能。这样一来,两只地鼠去搞运输,如果协调的好,理论情况下工作效率将是一只地鼠的 4 倍。

总共有 4 个并发的步骤:

  1. 把书装到车上;

  2. 把推车运到火炉旁;

  3. 把书卸到火炉里;

  4. 运回空推车。

可以再增加一个分组,将这个并发模型并行化。

下面我们再来看另外一种并发模型。负责运输的地鼠抱怨说运输路程太长,那我们就增加一个中转站。

然后再增加一个分组,将这个并发模型并行化,两个分组并行执行。

可以把上面的并发模型再改进一下。增加中转站的同时,再增加两只地鼠,一只负责将从书堆运过来的书卸到中转站,另一只负责将书从中转站装到推车里,再让后面的地鼠运输到火炉旁。

然后再增加一个分组,将这个并发模型并行化。

到此,相信大家对" Go语言并发与并行的区别是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

地鼠 火炉 运输 模型 推车 效率 语言 中转站 书装 只有 就是 方式 程序 中转 处理 设计 同时 处理器 必然 故事 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 今日互联网科技 港股互联网科技股 友谊互联网络科技 火传媒上海互联网科技 互联网科技的未来发展 互联网科技英文翻译 天扬科技互联网广告 北京三清互联网科技 深圳前海聚择互联网科技有限公司 荆州市昕露互联网络科技有限公司 青岛科技大学互联网大赛研究生 湖南一路畅行互联网科技 互联网媒体平台算高科技产业 工业互联网等科技实现智能化赋能 滨湖区互联网智能科技产品有哪些 南通创西澳互联网科技有限公司 互联网营销推广黑科技 中国科技和美国互联网 求路客互联网科技电话 互联网科技创新创业项目 国智互联网科技 金融科技还是互联网 北京互联网科技 无锡溥仪互联网科技有限公司 互联网和高科技公司 互联网汽车科技小镇 恒生互联网科技指数跳水 中国互联网十大科技股排名 互联网营销推广黑科技 广东鹅鹅鹅互联网科技有限公司
0