Golang并发(一)- 并发的介绍 - Go语言中文社区

Golang并发(一)- 并发的介绍


People can only lose when they give up fighting, so long as they insist on fighting, they will not lose.

人,只有在放弃战斗的时候才算输,只要坚持战斗,就还没输。

Golang是并发语言而不是并行语言。

那么并行和并发有什么千丝万缕的关系的呢?

什么是并发,并行?

并发就是一次性做大量的事情的能力。

1. 解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。

    例如: 每天早上10分钟我洗脸,刷牙,吃早饭等等很多事情,这就是并发。  我一边刷牙的同时在烧水做饭这就是并行。

    并发的关键是你有处理多个任务的能力,不一定要同时。并行的关键是你有同时处理多个任务的能力。

 

2. 解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。

 

3.解释三:在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群

    所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。

 

用技术的层面来说明:

    假如一个web网页中有视频播放和文件下载两个动作,当浏览器在单核的处理器下运行时, CPU核心会在这两个事件中来回切换,(同时)播放视频和下载,这就称为并发。并发进程在不同的时间点开始并有着重叠的执行周期。

164812_iOWe_2271515.png

 在肉眼上感知到的是同时的。

     假如你的CPU是多核处理器,那么下载和播放会在不同的CPU核心同时执行,这就是并行。

164834_W61F_2271515.png

    并行并不一定使执行时间更快。这是因为并行运行的组件可能必须相互通信。例如,在我们的浏览器中,当文件下载完成时,应该将它传递给用户,比如使用弹出窗口。这种通信发生在负责下载的组件和负责呈现用户界面的组件之间。这种通信开销在并发系统中很低。当组件在多个内核中并行运行时,这种通信开销很高。因此并行程序并不一定使执行时间更快!

Go支持并发

在Golang中使用goroutine和channel来处理并发执行。

并发属于并行。

更多关于并发、并行的介绍可谷歌百度深入了解。

 

 

 

转载于:https://my.oschina.net/90design/blog/1634095

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_33894992/article/details/91929136
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-23 16:40:10
  • 阅读 ( 1236 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢