作家
登录

可视化学习 Go并发编程

作者: 来源: 2017-11-10 12:32:08 阅读 我要评论

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践


效不雅如下图(复制链接 http://talks.bingohuang.com/2017/go-concurrency-visualize/helloworld.html 在浏览器中打开也可直接拜访):

并行&并发

想懂得并行和并发的差别,推荐看一下Rob Pike的分享(点击浏览原文即可跳转)。在这个视频里,他用形象的Gopher动图,讲解了Go并发的过程。

因为今天的重点不是讲理论,而是站在可视化的角度来展示并发的过程。所以,结合这两个可视化图形可以直不雅的懂得并发和并行的差别,毕竟一图胜千言。(请复制链接在浏览器中打开)

并发:http://talks.bingohuang.com/2017/go-concurrency-visualize/pingpong36.html

36个玩家

并行:http://talks.bingohuang.com/2017/go-concurrency-visualize/parallelism.html

总的来说,并行就是同时履行(平日是相干的)计算义务的编程技巧,两个或者多个事宜在同一时刻产生;而并发是将互相自力的履行过程综合到一路的编程技巧,两个或多个事宜在同一时光距离内产生。

为什么要存眷并发?

当今是多核的时代,并发的世界。摩尔定律逐渐掉效,须要更多存眷并发的编程思惟。

但并发编程并不轻易,而 Go 对并发有很好的支撑。

Go 说话中的并发

Goroutine - 并发履行

  • 类似于 UNIX 中的 &
  • 很像线程,但更轻量
  • 一个 goroutine 就是一个自力运行的函数
  • 当一个 goroutine 壅塞时,地点的线程会壅塞,但其它 goroutine 不受影响

可视化进修 Go并发编程

Channel

  • 类似于 UNIX 中的管道
  • 它许可在 Goroutine 之间传递消息

但问题来了:

  • 我们如何去讲解 Go 的并发?
  • 我们如何思虑 Go 的并发过程?
  • 最终,我们如何更好的实践 Go 并发编程?
  • 这里祭出一个法宝——GoTrace,它是一个能将 Go 并发过程可视化的开
  • gotrace(go):分析 go tool trace 的履行结不雅
  • gothree(js): 基于 ThreeJs 和 WebGL 生成 3D 图像

如下有一个简单的例子,这是常见的急鹞鲼,后续还可以做成可视化的图形。

可视化进修 Go并发编程

Select

  • 类似于说话中常见的 switch
  • 但它的断定前提是基于通信,而不是基于值的等量匹配

可视化进修 Go并发编程

Go让并发编程变得简单起来

感激 divan 大年夜神 供给了这款对象和不少 Go 并发模式的素材。

耳听为虚,目击为实

1.Hello,World!

可视化进修 Go并发编程

无论写什么竽暌癸言,都邑大年夜 hello world开端,代码异常简单 - 单 channel,单 goroutine,一次写,一次读。

可视化进修 Go并发编程

这里蓝色的线表示 goroutine 跟着时光运行。细的蓝线连接了 ‘main’ 和 ‘#20’,标记住 go routine 的启动和停止,揭示了它们的父子关系。最后,红色箭头给我们展示了‘发送/接收’的动作。实际上它是两个自力的动作,我试着用动画展示成一个零丁的事务:大年夜 A 发送到 B。 Goroutine 名称中的的 “#20”,是实际的 goroutine 内部 ID,经由过程某种手段大年夜运行时获取。

2.急鹞鲼

记得在前面讲Channel举的一个急鹞鲼的例子,也异常典范 - 创建一个 channel,启动一个 goroutine,在给定的时光距离之后向这个 channle 写入数据,之后将这个 channel 返回给函数的调用着。这个调用者会壅塞固定的时光后去攫取该 channel。让我们来运行 24 个如许的急鹞鲼测验测验着做可视化。

可视化进修 Go并发编程

看一下效不雅(复制链接http://talks.bingohuang.com/2017/go-concurrency-visualize/timer.html ):

可视化进修 Go并发编程

可视化进修 Go并发编程

异常的形象,是不是?

3.兵乓球


  推荐阅读

  iPhone X操作变得更复杂:苹果无奈但坚定

Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 很难说进修曲线的进步会“吓走”若干人,但至少如今没有太大年夜的不满之声,iPhone X的高利润>>>详细阅读


本文标题:可视化学习 Go并发编程

地址:http://www.17bianji.com/lsqh/38725.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)